给定其字符串名称,如何实例化一个类?

我有一个抽象类,我想将其初始化为扩展它的类。


我有子类名称作为字符串。


除此之外...


String childClassString;

MyAbstractClass myObject;


if (childClassString = "myExtenedObjectA")

    myObject = new ExtenedObjectA();

if (childClassString = "myExtenedObjectB")

    myObject = new ExtenedObjectB();

我怎样才能做到这一点?基本上,我该如何摆脱if语句?


慕桂英546537
浏览 499回答 3
3回答

米琪卡哇伊

查看Activator.CreateInstance()。myObject = (MyAbstractClass)Activator.CreateInstance("AssemblyName", "TypeName");要么var type = Type.GetType("MyFullyQualifiedTypeName");var myObject = (MyAbstractClass)Activator.CreateInstance(type);

翻翻过去那场雪

我相信这应该有效:myObject = (MyAbstractClass)Activator.CreateInstance(null, childClassString);第null一个参数中的in默认为当前执行的程序集。有关更多参考:MSDN编辑:忘记投射到 MyAbstractClass
打开App,查看更多内容
随时随地看视频慕课网APP