无法从使用中推断出GetInstance <t>()'。尝试明确指定类型参数</t>

时间:2012-03-14 11:44:24

标签: c# .net generics activator

我创建了一个动态方法来创建不同类型的实例,但不确定为什么它在编译时给出了上面提到的错误,我是否还需要再次将返回值强制转换为指定的类型?

 internal static T GetInstance<T>()
    {
        dynamic obj = Activator.CreateInstance(typeof(T));
        return obj;
    }

    private Foo f = GetInstance<Foo>();

1 个答案:

答案 0 :(得分:7)

为什么不使用MSDN推荐的内容,具体如下:

internal static T GetInstance<T>() where T:new()
{
    return new T();
}

http://msdn.microsoft.com/en-us/library/0hcyx2kd.aspx

编辑:

虽然,我不明白为什么你甚至想要这种方法?

而不是调用var x = GetInstance<Foo>();,你可以只做var x = new Foo();,因为如果你想用GetInstance<T>()作为类型参数调用Foo,那么Foo必须有无参数构造函数(或者是我错过了什么?)。