这个问题是对这个先前提出的问题的补充。
我应该初始化的子类和将是列表类型的基类
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 :(