2009-06-02 2 views
4

У меня есть абстрактный класс Step и многие потоковые классы Step, которые я хотел бы создать на основе XML-документа.Создание объекта .Net по имени класса

Таким образом, я хотел бы создать экземпляр конкретного шага класса на основе типа в документе XML

типа Step = «GenerateReport» .... типа Step = «PrintReport» . ...

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

ответ

5

Самый простой вариант является Activator.CreateInstance перегрузки, которая принимает Type и params object[]. Для Type вы можете иногда использовать Type.GetType(string), но это не проверяет все сборки (только текущая сборка и некоторые системные сборки). Если имя сборки квалифицируется вы, вероятно, будет в порядке, - но если это просто пространство имен квалифицированных (то есть FullName), то вы, вероятно, хотите использовать Assembly.GetType(string) - т.е.

Type type = typeof(SomeKnownTypeInTheSameAssembly).GetType(fullName); 
object obj = Activator.CreateInstance(type, args); 
+0

Спасибо за подробный ответ - это работал. –

Смежные вопросы