gpt4 book ai didi

c#-4.0 - 时间:2019-03-17 标签:c#genericsnew()constraints with type : (new(T))

转载 作者:行者123 更新时间:2023-12-02 21:35:09 25 4
gpt4 key购买 nike

我正在构建一个小助手来将 EF4 对象转换为 POCO。(我知道有AutoMapper,但我此时遇到了c#的困境)

我怎样才能完成这项工作(其中 P: new(E) 不合法我希望确保 P (POCO) 类作为采用 E 类的构造函数(因此处理转换)

我怎样才能做到这一点?

如何在 C# 中创建一个可以接受新(类型)约束的通用函数?

   public static List<P> ListConvert<E, P>(List<E> efList) where P: new(E)
{
List<P> pList = new List<P>();

foreach (E item in efList)
{
P myItem = new P(item);
pList.Add(myItem);
}
return pList;

最佳答案

没有这样的限制。您可以做的是有一个额外的参数:

public static List<P> ListConvert<E, P>(List<E> efList, Func<E, P> func)

这样就不需要是构造函数,但您可以传入一个委托(delegate)来调用构造函数:

ListConvert(list, x => new Foo(x))

我有一个天马行空的想法,可以启用构造函数约束,称为 "static interfaces" - 这些仅对通用约束有用,但也可以启用某些运算符用例。

关于c#-4.0 - 时间:2019-03-17 标签:c#genericsnew()constraints with type : (new(T)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4682964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com