1

例は次のようになります。

interface IA
{
    ICollection<IB> Bs {get;set;}
}

interface IB
{
}


public class BBase : IB
{

}

public class ABase : IA
{
    public ICollection<BBase> Bs { get; set; }
}

問題は、 で行ったのと同じように でインターフェイスを実装しようとしたときにIA、エラーが発生したことです。inを実装する代わりに使用することしかできないということですか?BBaseABaseIBBBaseIAABase

4

2 に答える 2

2

別の型を指定してプロパティを実装することはできません -インターフェイス (C# プログラミング ガイド)を参照してください。

インターフェイス メンバーを実装するには、実装するクラスの対応するメンバーが public であり、非静的であり、インターフェイス メンバーと同じ名前とシグネチャを持っている必要があります。

特定のケースICollection<IB>では、プロパティのタイプとして使用するかABase、 Konstantin Vasilcov の提案に従って generic を使用する必要がありますIA<T>

一般的なルートに行けない場合は、インターフェイス「get」でプロパティを作成することを検討してください-のみ。このようにして、クラスにセッターを提供せずに、アイテムをコレクションに追加するカスタム メソッドを使用して、すべての「コレクションに追加」操作を検証できます。

于 2013-02-28T07:27:13.113 に答える