2010-02-21 51 views
3

基本上,我使用的ORM(特別是LLBLGen)爲我的所有表創建實體對象。所有這些實體類型都是從一個基類繼承而來的(或者是其中的一組實體)。我想創建一個擴展方法,該方法接受基類的列表並返回一些字符串,但我想傳遞繼承類型而不顯式轉換。基本類型和繼承類型的工作通用列表

舉例來說,我有這樣一個功能:

string GetString(List<EntityBase2> list); // also tried List<IEntityCore>, which the base class implements 

而且我想通過它是這樣的:

List<ProductEntity> products = ... // populate it 

string v = GetString(products); 

,但我得到編譯器錯誤。

我該如何完成創建這個輔助方法。如果可以的話,我想盡量避免投射,但如果這是最好的方法,那麼至少我可以對此有所確認。

回答

3

試試這個:

string GetString<T>(List<T> list) where T : IEntityCore {...} 

這樣,你得到的是它需要實現IEntityCore對象的列表的通用方法。不需要進行轉換,編譯器將確保您傳遞正確的對象。從框架2.0開始。