インターフェイスと継承に問題があります。ここに私の問題:インターフェイスメンバーに一致する戻り値の型がないため実装できません
私は2つのインターフェイスがあります。
public interface IElementA
{
List<IElementA> Child { get; }
}
// The goal is to add some properties to the main interface
public interface IElementB : IElementA
{
string Name { get; }
}
をしてIElementB
public class ElementB : IElementB
{
protected List<ElementB> m_Child = new List<ElementB>();
public List<ElementB> Child { get { return m_Child; } }
public string Name { get { return "element B"; }
}
を実装するクラスは、その後、私はエラーを得た:
'ElementB' does not implement interface membre 'IElementA.Child'.
'ELementB.Child' cannot implement 'IElementA.Child' because it does not have the matching return type of 'List<IElementA>'."
私は私を理解書く必要があります
public List<IElementA> Child { get { return m_Child; } }
テンプレートトリックを知っていますが、それは別の種類のIElementAのリストでのみ動作します。
あなたの問題を解決するためのアイデアはありますか?
よろしく JM
'List'は 'List 'と同じ型ではないため、コンパイルエラーが発生します。 –
DavidG
を見てください*共変動* – Rahul
DavidGは正しい答えを持っています – Picnic8