我有以下课程:
Class A {}
Class B: A {}
Class C: A {}
现在,我有2个函数用B或C填充数据。目前,需要2个函数,因为一个函数创建New B()
而另一个New C()
。
我想只使用一个函数,我可以告诉它使用B或C.我不能只发送一个类并告诉它被填充,被调用的函数需要能够动态创建类。
答案 0 :(得分:3)
您可以在类型参数上编写一个new
约束的泛型函数:
class FillerOfBsAndCs {
A Fill<T>() where T : new(), A {
// do the preparations...
T res = new T();
// fill res with data
return res;
}
}
您现在可以像这样调用此方法:
FillerOfBsAndCs filler = new FillerOfBsAndCs();
A a1 = filler.Fill<B>();
A a2 = filler.Fill<C>();
答案 1 :(得分:1)
您可以考虑使用通用方法
public T FillA<T>() where T : A, new()
{
T newobj = new T();
newobj.AProperty1 = valueForProperty1;
newobj.AProperty2 = valueForProperty2;
// etc.
return newobj;
}