Как я инстанцирую класса, учитывая его имя строки?

У меня есть абстрактный класс, и я хочу к initalize его к классу, который расширяет его.

У меня есть имя дочерних классов как строка.

Помимо этого...

String childClassString;
MyAbstractClass myObject;

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

Как я могу сделать это? В основном, как я избавляюсь от если операторы здесь?

63
задан Robert Harvey 14 September 2018 в 00:22
поделиться

2 ответа

Посмотрите Activator.CreateInstance ().

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

или

var type = Type.GetType("MyFullyQualifiedTypeName");
var myObject = (MyAbstractClass)Activator.CreateInstance(type);
113
ответ дан 24 November 2019 в 16:15
поделиться

Я считаю, что это должно сработать:

myObject = (MyAbstractClass)Activator.CreateInstance(null, childClassString);

null в первом параметре по умолчанию соответствует текущей исполняющейся сборке. Для получения дополнительной информации: MSDN

редактировать: забыл преобразовать в MyAbstractClass

21
ответ дан 24 November 2019 в 16:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: