我有以下课程:
Class A {}
Class B: A {}
Class C: A {}
现在,我有 2 个用数据填充 B 或 C 的函数。目前,需要 2 个函数,因为一个创建New B()
,另一个创建New C()
.
我只想要一个可以告诉使用 B 或 C 的函数。我不能只发送一个类并告诉它被填充,被调用的函数需要能够动态创建类。
您可以编写一个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>();
您可以考虑使用通用方法
public T FillA<T>() where T : A, new()
{
T newobj = new T();
newobj.AProperty1 = valueForProperty1;
newobj.AProperty2 = valueForProperty2;
// etc.
return newobj;
}