#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
в текущей сборке.