创建对象泛型类

时间:2014-03-03 08:34:28

标签: c# .net oop generics

我最近遇到了一个问题,在过去我没有做过多少工作。我有一个名为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方法不接受任何参数。任何人都可以帮我解决问题吗?

2 个答案:

答案 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>();