GetInstance<;T>;()';无法根据用法推断.请尝试显式指定类型参数

本文关键字:类型参数 用法 gt lt GetInstance | 更新日期: 2023-09-27 18:27:40

我已经创建了一个动态方法来创建不同类型的实例,但不确定为什么它在编译时会出现上述错误,我还必须再次将返回值强制转换为指定类型吗?

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

GetInstance<;T>;()';无法根据用法推断.请尝试显式指定类型参数

为什么不直接使用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();,因为如果您想用Foo作为类型参数来调用GetInstance<T>()(或者我遗漏了什么?),Foo必须具有无参数构造函数。