ジェネリック メソッド内で内部コンストラクターを使用してオブジェクトを構築することは可能ですか?
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>();
これにより、実行時に同じエラーが発生します。