0

インターフェースがあればMyInterface1

interface MyInterface1
{
    ImyGod myproperty { get; set; }
}

クラスに次のことをさせると、不平を言う

class myClass : IMyInterface1
{
    myGod myproperty { get; set; }
}

ここで myGod を使用して myClass を開始する必要がありますか? ありがとう。

4

2 に答える 2

2

それは不可能です。インターフェイスを実装するには、メンバーの署名がインターフェイスで定義されている署名とまったく同じである必要があります。プロパティの型が正確に一致するように、インターフェイスまたはクラスの実装を変更する必要があります。

プロパティにはセッターがあるため、インターフェイスに従って、そのプロパティに実装する任意のオブジェクトを設定できることを意味しますImyGodが、代わりに派生クラスが型付けされてmyGodいるため、 の他の実装をサポートできませんImyGod

あなたができることは、次のような汎用インターフェースを使用することです:

interface MyInterface1<T> where T : ImyGod
{
    T myproperty { get; set; }
}

class myClass : IMyInterface1<myGod>
{
    myGod myproperty { get; set; }
}

someOtherGodこれにより、コンパイルして意図したとおりに動作し、明らかにサポートできないプロパティに誰かがインスタンスを設定するのを防ぎます。

于 2012-11-05T19:27:59.030 に答える
0

プロパティを public として宣言する必要があります。

class myClass : IMyInterface1 
{ 
    public ImyGod myproperty {get; set;} 
}
于 2012-11-05T19:24:56.000 に答える