この質問は、この以前に尋ねられた質問への追加です。
初期化する必要のある子クラスとリスト型になる基本クラス
abstract public class baseClass
{
public baseClass()
{
}
}
public class child1 : baseClass
{
public child1() : base
{
}
}
public class child2 : baseClass
{
public child2() : base
{
}
}
私の列挙型とマネージャークラス
public enum ClassType
{
child1,
child2
}
public class Manager
{
private List<baseClass> _children;
public void Initialise(ClassType type)
{
var temp = Activator.CreateInstance(null, type.ToString());
//null = assembly which means this assembly
_children.Add(temp);
}
}
マネージャークラスは、私の前の質問から提案された回答に更新されました。しかし、まだ何かが間違っています。上記の場合、次のエラーが発生します。TypeLoadExceptionが処理されませんでした:アセンブリ'Something'からタイプ'child2'を読み込めませんでした。これを変更するにはどうすればよいですか?私は成功せずに他のいくつかのオプションを試しました。(一部はクラスの作成になりますが、追加するとnullReferenceExceptionになります)。
編集 :
コードを次のように変更しました。
string assemblyName = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
Type objType = Type.GetType(string.Format("{0}.{1},{0}", assemblyName, type.ToString()));
var temp = (baseClass)Activator.CreateInstance(objType, 1);
// 1 is the parameter I need to add to the constructor.
_children.Add(temp);
これで正しいクラスが作成されましたが、クラスをリストに追加するとNullReferenceExceptionが発生します:(