いいえ、これはジェネリックに関する質問ではありません。
内部コンストラクターを持ついくつかのクラスを持つファクトリーパターンがあります(ファクトリーを介していない場合、それらをインスタンス化したくありません)。
私の問題は、CreateInstance
非公開パラメーターに「true」を渡さない限り、「このオブジェクトにパラメーターなしのコンストラクターが定義されていません」というエラーで失敗することです。
例
// Fails
Activator.CreateInstance(type);
// Works
Activator.CreateInstance(type, true);
次のように、ファクトリをジェネリックにしてもう少しシンプルにしたかったのです。
public class GenericFactory<T> where T : MyAbstractType
{
public static T GetInstance()
{
return Activator.CreateInstance<T>();
}
}
ただし、その「true」パラメーターを渡して非公開コンストラクターを受け入れる方法を見つけることができませんでした (内部)。
私は何かを見逃しましたか、それとも不可能ですか?