У меня есть абстрактный класс, и я хочу к initalize его к классу, который расширяет его.
У меня есть имя дочерних классов как строка.
Помимо этого...
String childClassString;
MyAbstractClass myObject;
if (childClassString = "myExtenedObjectA")
myObject = new ExtenedObjectA();
if (childClassString = "myExtenedObjectB")
myObject = new ExtenedObjectB();
Как я могу сделать это? В основном, как я избавляюсь от если операторы здесь?
Посмотрите 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
в первом параметре по умолчанию соответствует текущей исполняющейся сборке. Для получения дополнительной информации: MSDN
редактировать: забыл преобразовать в MyAbstractClass