Как загрузить Type из сборки, на которую есть ссылка, но использование в файле не используется - PullRequest
0 голосов
/ 10 мая 2019
  • Я создаю службу промежуточного программного обеспечения для запуска заданий.
  • У меня будет БД, полная заданий, которые выполняются.
  • Я хочу использовать отражение, чтобы получить конкретные классы, которыебудет выполнять задания, чтобы мне не приходилось жестко кодировать каждое задание в массивном выражении switch и создавать его экземпляры.
  • Класс, выполняющий задание, находится в проекте, отличном от класса, который пытается вызватьit.
  • Я создаю имя FulllyQuailifiedAssemblyName с битами информации для получения типа.
  • Проект, который пытается вызвать ссылку на задание на проект, в котором находится задание.
  • Все проекты находятся в .Net Framework 4.7.2 и являются просто обычными библиотеками.

Я знаю, что все в порядке Справочная информация и версии .Net и т. Д. Как будто я делаю

var assemblyname = typeof(Jobclass).AssemblyQualifiedName;

А затем подключите это к.

Type.GetType(assemblyname);

Тип, который получается, правильный.

Кажется, что только если я ссылаюсь на класс непосредственно в коде, тогда использованиезатем используется, а затем тype загружен.

но если я просто попытаюсь сделать это, используя строку, я получу значение null из типа.

Я считаю, что это правильное поведение, так как неиспользованное использование просто игнорируется при компиляциии т.д.

Вот мой код, чтобы попытаться получить тип из AssemblyQualifiedName

Использование оператора

using Middleware.Services.Thing;

Попытка получить тип из класса в другой сборке / проекте

 var typeName = GenerateTypeName(job.Service);

 var type = Type.GetType(typeName);

 if (type == null)
 {
     throw new InvalidOperationException("File can not be found for job");
 }

Есть ли способ явно загрузить использование, чтобы я мог получить тип ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...