基本上,我使用的是为我的所有表创建实体对象的 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);
但是我得到了编译器错误。
我怎样才能完成创建这个辅助方法。如果可以的话,我想避免转换,但如果这是最好的方法,那么至少我可以对此进行一些确认。
最佳答案
试试这个:
string GetString<T>(List<T> list) where T : IEntityCore {...}
这样您就可以获得一个通用方法,该方法采用实现 IEntityCore 的对象列表。无需强制转换,编译器将确保您传递正确的对象。从框架 2.0 开始工作。
关于c# - 基本类型和继承类型的工作通用列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2307212/