c# - 基本类型和继承类型的工作通用列表

标签 c# .net generics

基本上,我使用的是为我的所有表创建实体对象的 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/

相关文章:

c# - 应用程序在启动时崩溃,KERNELBASE.dll,异常代码 e0434352

java - Collections.max 方法类型参数声明签名 <T extends Comparable<?超T>>解释

c# - 正则表达式来测试逗号的正确使用

c# - 服务器关闭时通过命名管道发送数据

.net - 使用第三方依赖注入(inject)容器比使用我构建的容器有什么好处?

swift - Swift 2.2+ 中类型的上下文类型推断

java - 在 Java 中创建自定义数据结构并希望将元素添加到列表的末尾而不是开头

c# - WPF MVVM ContextMenu 绑定(bind) IsOpen 到模型

c# - 如何在xps中将多个fpages添加到固定文档?

c# - 如何忽略写在 web.config 中的 "maintainScrollPositionOnPostBack"属性?