2010-02-21 73 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开始。