是否可以在泛型方法内使用其内部构造函数构造对象?使用内部构造函数创建泛型类
public abstract class FooBase { }
public class Foo : FooBase {
internal Foo() { }
}
public static class FooFactory {
public static TFooResult CreateFoo<TFooResult>()
where TFooResult : FooBase, new() {
return new TFooResult();
}
}
FooFactory
驻留在相同的组件Foo
。类调用工厂方法是这样的:
var foo = FooFactory.CreateFoo<Foo>();
他们得到的编译时错误:
'Foo' must be a non-abstract type with a public parameterless constructor in order to use it as parameter 'TFooType' in the generic type or method 'FooFactory.CreateFoo()'
有什么办法来解决这个问题?
我也试过:
Activator.CreateInstance<TFooResult>();
这在运行时引发了同样的错误。
奇怪的是我不明白你的代码的任何错误在.NET 4不知道这个限制已经放宽?这是编译时还是运行时错误? – 2010-09-06 10:34:53
啊,我正在运行.NET 3.5。我会做一些挖掘。这是编译时错误。 – 2010-09-06 10:35:55
在这种情况下,请参阅我的答案。 – 2010-09-06 10:46:59