我最近遇到了一个问题,在过去我没有做过多少工作。我有一个名为ObjectCreator
的类,其方法为Create
。
public static class ObjectCreator
{
// Create method
}
我应该可以通过以下方式调用Create
方法。
var obj1 = ObjectCreator.Create<Employee>();
var obj2 = ObjectCreator.Create<Client>();
var obj3 = ObjectCreator.Create<Company>();
等等任何其他类型。现在如何在这里实现Create
方法?记住Create方法不接受任何参数。任何人都可以帮我解决问题吗?
答案 0 :(得分:4)
public static class ObjectCreator
{
public static T Create<T>() where T : new()
{
return new T();
}
}
我添加了T: new()
约束(强制类型T
拥有默认构造函数)和return语句只是为了说明一个可能的用例。
答案 1 :(得分:2)
我们已经Activator.CreateInstance Method 需要(而不是强制)无参数的公共构造函数。如果没有找到合适的构造函数,它会在运行时抛出异常。由于dcastor的回答强制编译时出错,所以似乎更好。
var obj1 = Activator.CreateInstance<Employee>();
var obj2 = Activator.CreateInstance<Client>();
var obj3 = Activator.CreateInstance<Company>();