我有以下代碼:它是協變和逆變相關的問題嗎?
class Header<TItem> where TItem : IItem { IEnumerable<TItem> Item { get; set; } }
class HeaderA : Header<ItemA> { public HeaderA(int a) {...} }
class HeaderB : Header<ItemB> { public HeaderB(int b) {...} }
interface IItem {...}
class ItemA : IItem { }
class ItemB : IItem { }
public static List<Header<IItem>> list = new List<Header<IItem>>
{
new HeaderA(1)
}
編譯錯誤在最後new HeaderA(1)
是
Error 1 The best overloaded Add method
'System.Collections.Generic.List<NS.Header<NS.IItem>>.Add(NS.Header<NS.IItem>)'
for the collection initializer has some invalid arguments
如何解決這個問題?
'新的ItemA()'看起來不像它被調用。你的意思是'新HeaderA(1)'? – Brad
@Brad謝謝。我糾正了。 – ca9163d9