我正在构建一个小助手来将 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/