一尘不染

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

c#

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

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

除此之外…

String childClassString;
MyAbstractClass myObject;

if (childClassString = "myExtenedObjectA")
    myObject = new ExtenedObjectA();
if (childClassString = "myExtenedObjectB")
    myObject = new ExtenedObjectB();

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


阅读 306

收藏
2020-05-19

共1个答案

一尘不染

查看Activator.CreateInstance()。

myObject = (MyAbstractClass)Activator.CreateInstance("AssemblyName", "TypeName");

要么

var type = Type.GetType("MyFullyQualifiedTypeName");
var myObject = (MyAbstractClass)Activator.CreateInstance(type);
2020-05-19