私はC#のジェネリックス機能を使用するファクトリメソッドを構築しようとしています。C#Generics - 型パラメータの制約
このファクトリメソッドでは、いくつかの特定のクラスに制約を加えたいと思います。これらのクラスには、すべてデフォルトのコンストラクタがありません。
これは私の例です。誰かがそれを実行することができるかどうか教えてもらえますか?
public class AbstractClass {
//this abstract class does not have a default constructor, nor its subclasses
public AbstractClass(SomeClassName obj) {
//use obj for initialization
}
}
//this factory class should create objects of type T that inherit
//from AbstractClass and invoke the non-default constructor
public class FactoryClass {
public static T BuildObject<T> (SomeClassName obj) where T: AbstractClass {
return new T(obj); //does not work?!?!?!
}
}
//Edit: ANSWER!!!
public static T BuildObject<T>(SomeClassUsedForTheConstructor item) where T : SomeAbstractClass {
return (T) Activator.CreateInstance(typeof (T), item);
}
これは私が使っていたものですが、今はBrianが述べたように 'Activator.CreateInstance'を使用しています。 –