0
interface IRestrictionUserControl
{
    public GeneralRestriction Foo{ get; protected set; }
}

public partial class RestrictionUserControl : UserControl, IRestrictionUserControl
{
    public RestrictionUserControl(Restriction r)
    {
        InitializeComponent();
        Foo = r;
    }
 }

エラーが表示されます: The name 'Foo' does not exist in the current context。私は何を間違っていますか?

注:Restrictionから継承しGeneralRestrictionます。

4

5 に答える 5

1

インターフェイスではなく、クラスからのみメンバーとメソッドを継承します。インターフェイスは、実装クラスに強制的に持たせるもののテンプレートです。

したがって、インターフェイスにパブリック メンバー プロパティがある場合は、メソッドの場合と同様に、クラスに実装する必要があります。

于 2013-03-30T17:51:34.653 に答える
1

制限ユーザーコントロール = 制限ユーザーコントロール?

タイプミスがあると思います

于 2013-03-30T17:47:18.003 に答える
0

インターフェイス定義に書いGeneralRestriction Foo{ get; protected set; }ても、クラス定義と同じ意味ではありません。

クラスでは、コンパイラーがゲッターとセッターを生成します (C# 2.0 以降はよく覚えています) が、インターフェイスでは、プロパティにはパブリック ゲッターと保護されたセッターが必要であると言うだけです。

したがって、他の回答で述べたように、派生クラスでそれらを実装する必要があります。実装とは、ゲッターとセッターを宣言することを意味します(インターフェイスからクラスにコードをコピーして貼り付けることもできます)

于 2013-03-30T17:53:50.533 に答える