我有一个抽象类,我想将其初始化为扩展它的类。我有子类名称作为字符串。除此之外...String childClassString;MyAbstractClass myObject;if (childClassString = "myExtenedObjectA") myObject = new ExtenedObjectA();if (childClassString = "myExtenedObjectB") myObject = new ExtenedObjectB();我怎样才能做到这一点?基本上,我该如何摆脱if语句?
3 回答
米琪卡哇伊
TA贡献1998条经验 获得超6个赞
查看Activator.CreateInstance()。
myObject = (MyAbstractClass)Activator.CreateInstance("AssemblyName", "TypeName");
要么
var type = Type.GetType("MyFullyQualifiedTypeName");
var myObject = (MyAbstractClass)Activator.CreateInstance(type);
翻翻过去那场雪
TA贡献2065条经验 获得超13个赞
我相信这应该有效:
myObject = (MyAbstractClass)Activator.CreateInstance(null, childClassString);
第null一个参数中的in默认为当前执行的程序集。有关更多参考:MSDN
编辑:忘记投射到 MyAbstractClass
- 3 回答
- 0 关注
- 498 浏览
添加回答
举报
0/150
提交
取消