c# - 需要有关 C# 泛型的帮助

标签 c# generics

我在编写使用泛型的类时遇到了一些麻烦,因为这是我第一次必须创建使用泛型的类。

我想做的就是创建一个将 List 转换为 EntityCollection 的方法。

我收到编译器错误: 类型“T”必须是引用类型才能将其用作泛型类型或方法“System.Data.Objects.DataClasses.EntityCollection”中的参数“TEntity”

这是我尝试使用的代码:

    public static EntityCollection<T> Convert(List<T> listToConvert)
    {
        EntityCollection<T> collection = new EntityCollection<T>();

        // Want to loop through list and add items to entity
        // collection here.

        return collection;
    }

它提示 EntityCollection collection = new EntityCollection() 这行代码。

如果有人可以帮助我解决这个错误,或者向我解释为什么我会收到它,我将不胜感激。谢谢。

最佳答案

阅读 .NET 中的通用约束。具体来说,您需要一个“where T : class”约束,因为 EntityCollection 不能存储值类型(C# 结构),但不受约束的 T 可以包含值类型。您还需要添加一个约束来说明 T 必须实现 IEntityWithRelationships,同样是因为 EntityCollection 需要它。这导致诸如:

public static EntityCollection<T> Convert<T>(List<T> listToConvert) where T : class, IEntityWithRelationships

关于c# - 需要有关 C# 泛型的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1821885/

相关文章:

c# - DataTrigger 比较日期值以设置单元格样式

c# - 自定义所选(当前)FlyoutItem 的样式

c# - Xamarin 内存分析器对象增长理解

swift - 如何在 Swift 中处理多个泛型协议(protocol)?

c# - 在运行时使用动态泛型参数转换泛型

python - 将任意函数与 MyPy 的 TypeVar 绑定(bind)属性一起使用

c# - Automapper:从自动映射对象解析源属性名称

c# - 如何使用 C# 通过 Selenium 获取元素列表

java - 方法参数必须是实现某个接口(interface)的某个类的obj

c# - 抽象类的嵌套列表<>属性