基本上,我正在使用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);
但是我遇到了编译错误。
如何完成创建此辅助方法。如果可以,我想避免施法,但如果这是最好的方式,那么至少我可以对此进行一些确认。
答案 0 :(得分:3)
试试这个:
string GetString<T>(List<T> list) where T : IEntityCore {...}
通过这种方式,您将获得一个通用方法,该方法获取实现IEntityCore的对象列表。没有必要进行强制转换,编译器将确保传入正确的对象。从框架2.0开始。