是否可以在泛型方法中使用其内部构造函数构造对象?
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' 必须是具有公共无参数构造函数的非抽象类型,才能将其用作泛型类型或方法 'FooFactory.CreateFoo()' 中的参数 'TFooType'
有没有办法解决这个问题?
我也试过:
Activator.CreateInstance<TFooResult>();
这会在运行时引发相同的错误。