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

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);

但是我获得了编译器错误。

我该如何创建这个帮助方法?如果可能的话,我想避免强制转换,但如果这是最好的方法,那么至少我可以确认一下。

1个回答

3

试一下这个:

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

这样,您将获得一个通用方法,它接受实现IEntityCore接口的对象列表。无需进行强制转换,编译器会确保您传入正确的对象。从2.0框架开始就可用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接