我创建了一个动态方法来创建不同类型的实例,但不确定为什么它在编译时给出了上面提到的错误,我是否还需要再次将返回值强制转换为指定的类型?
internal static T GetInstance<T>()
{
dynamic obj = Activator.CreateInstance(typeof(T));
return obj;
}
private Foo f = GetInstance<Foo>();
答案 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必须有无参数构造函数(或者是我错过了什么?)。