在通用方法中使用内部构造函数构造对象是否可行?
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>();
这会在运行时引发相同的错误。