工作基类型和继承类型的通用列表

时间:2010-02-21 19:46:25

标签: c# .net generics

基本上,我正在使用ORM(特别是LLBLGen)为我的所有表创建实体对象。所有这些实体类型都继承自基类(或实际上是一组基类)。我想创建一个扩展方法,接受基类的List并返回一些字符串,但我想传递继承的类型而不显式转换。

例如,我有一个像:

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

我希望传递类似这样的内容:

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

string v = GetString(products);

但是我遇到了编译错误。

如何完成创建此辅助方法。如果可以,我想避免施法,但如果这是最好的方式,那么至少我可以对此进行一些确认。

1 个答案:

答案 0 :(得分:3)

试试这个:

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

通过这种方式,您将获得一个通用方法,该方法获取实现IEntityCore的对象列表。没有必要进行强制转换,编译器将确保传入正确的对象。从框架2.0开始。