我正在构建一个小帮手,将EF4对象转换为POCO.(我知道有AutoMapper,但我此时正处于ac #dilemma)
我怎样才能完成这项工作(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;
Run Code Online (Sandbox Code Playgroud)
没有这样的限制.你可以做的是有一个额外的参数:
public static List<P> ListConvert<E, P>(List<E> efList, Func<E, P> func)
Run Code Online (Sandbox Code Playgroud)
这样,它不需要是构造函数,但您可以传入一个调用构造函数的委托:
ListConvert(list, x => new Foo(x))
Run Code Online (Sandbox Code Playgroud)
我有一个蓝天的想法,它将启用构造函数约束,称为"静态接口" - 这些只对通用约束有用,但也会启用一些操作符用例.
| 归档时间: |
|
| 查看次数: |
3781 次 |
| 最近记录: |