Создание экземпляра из имени класса

#c# #reflection

Вопрос:

Я пытаюсь создать экземпляр класса во время выполнения. Классы, которые я пытаюсь создать, наследуются от базового класса ConfigMgrObj и называются ConfigMgr_xxxxxx , например ConfigMgr_Collection . Все они принимают специальный объект, который я называю oController, и строку в качестве аргументов.

Это строка, которую я использую для этого, где classstoget-это строка, содержащая, например, имя класса ConfigMgr_Collection .

 object oNewObject = System.Activator.CreateInstance(null, "StackOverflowNamespace."   ClassToGet, new object[] { oController, ClassToGet });
 

Это создает исключение исключения TypeLoadException. Что с ним такое?

Комментарии:

1. Вы можете расширить свой вопрос, загружена ли сборка, содержащая тип?

Ответ №1:

Действительно ли типы, которые вы пытаетесь создать, объявлены в одной и той же сборке? Передача null в качестве первого параметра сообщает Активатору, что типы находятся в текущей сборке.

Комментарии:

1. Черт возьми, это все. Я забыл, что делал это в графическом интерфейсе, со всеми моими материалами в том же пространстве имен, но в другой сборке. Найди приемлемый ответ, чтобы смягчить мою глупость.

Ответ №2:

Похоже, он не нашел класс, названный "StackOverflowNamespace." ClassToGet в текущей сборке.