我有一些接口和繼承的麻煩。在這裏我的問題:無法實現接口成員,因爲它沒有匹配的返回類型
我有兩個接口:
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
'列表'與列表'不是同一種類型,這就是爲什麼你會收到編譯錯誤。 –
DavidG
看*協變* – Rahul
DavidG有正確答案 – Picnic8