的陣列通用接口假設我們有以下接口:泛型
public interface ILine<T>
{
T Item { get; set;}
}
我有類Line1
和Line2
實現它
public class Item1
{
}
public class Item2
{
}
public class Line1 : ILine<Item1>
{
public Item1 Item {get; set;}
}
public class Line2 : ILine<Item2>
{
public Item2 Item { get; set; }
}
現在我有一類
public class Lines1
{
public Line1[] Items { get; set;}
}
我想創建一個界面
public interface ILines<T>
{
ILine<T>[] Items { get; set;}
}
然後讓Lines1執行它Lines1 : ILines<Item1>
(並且Lines2
與Item2
的做法相同)。但這是不可能的,因爲編譯器錯誤
'Lines1'沒有實現接口成員'ILines.Items'。 'Lines1.Items'無法實現'ILines.Items',因爲它確實沒有匹配返回類型'IEnumerable>'的 。
的類都是從XML反序列化,所以我真的需要性能Item1
,Item2
,Line1
,Line2
不是接口。 我能做些什麼來繼續前進?或者我正在嘗試應用一些着名的反模式?
更新:很好解釋,爲什麼它是不可能的: covariance in c#
不幸的是我沒有寫問題之前發現它。
這不是我想要實現的。你建議使用公共ILine []線,我需要公共Line1 [] Items {get;設置;}。創建對象的序列化程序知道Line1類是什麼,但無法創建接口的實例。 –