C#创建新T()

你可以看到我正在尝试(但失败)做以下代码:

protected T GetObject()
{
    return new T();
}

任何帮助将不胜感激。

编辑:

上下文如下。我正在玩一个自定义控制器类,为所有控制器派生,用标准化的方法。所以在上下文中,我需要创建一个控制器类型的对象的新实例。所以在写作时,它是这样的:

public class GenericController<T> : Controller
{
    ...

    protected T GetObject()
    {
        return (T)Activator.CreateInstance(ObjectType);
    }        

    public ActionResult Create()
    {
        var obj = GetObject()

        return View(obj);
    }

所以我决定反思最容易在这里。我同意,当然,考虑到问题的最初陈述,标记为正确的最适当的答案是使用new()约束的答案。我已经固定了。

看看new Constraint

public class MyClass<T> where T : new()
{
    protected T GetObject()
    {
        return new T();
    }
}

T可以是没有默认构造函数的类:在这种情况下,新T()将是一个无效语句。 new()约束说T必须有一个默认构造函数,这使得新的T()合法。

您可以对通用方法应用相同的约束:

public static T GetObject<T>() where T : new()
{
    return new T();
}

如果需要传递参数:

protected T GetObject(params object[] args)
{
    return (T)Activator.CreateInstance(typeof(T), args);
}
http://stackoverflow.com/questions/6529611/c-sharp-create-new-t

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:C#创建新T()