我有兩類:無法投泛型列表到自定義列表類型
public class MyClass
{
public int Foo { get; set; }
public string Bar { get; set; }
}
public class MyList : List<MyClass>
{
}
在其他的代碼,我從一個數據庫的每條記錄創建的MyClass
情況下,我想回報他們所有在MyList
實例:
var records = _repository.GetRecords();
return (MyList) records.Select(x => x.ConvertTo<MyClass>()).ToList();
代碼編譯罰款,但它拋出一個運行InvalidCastException
:
無法投射'System.Collections.Generic.List`1 [MyClass]'類型的對象來鍵入'MyList'。
我不明白爲什麼這個錯誤發生,因爲MyList
是一個List<MyClass>
。
我發現一些相關的問題,都談論協變性。 This question與我的問題最相似,但我不知道如何調整答案來解決我的問題。
我的問題:
我怎樣才能建立一個MyList
實例進行的DB記錄?
我使用C#和.NET 4.0
'名單'是不是** **自動'MyList'了。儘管如此,你可以創建一個構造函數,它使用'List '。 –
2013-05-10 17:58:22
*孩子*是其*母親*類型,而不是相反。一個*母親*可能有很多*孩子*。 – 2013-05-10 18:03:21
CA1002:DoNotExposeGenericLists - http://msdn.microsoft.com/en-us/library/ms182142(v=vs.80).aspx ...記住這一點。 – 2013-05-10 18:17:51