- Я создаю службу промежуточного программного обеспечения для запуска заданий.
- У меня будет БД, полная заданий, которые выполняются.
- Я хочу использовать отражение, чтобы получить конкретные классы, которыебудет выполнять задания, чтобы мне не приходилось жестко кодировать каждое задание в массивном выражении 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");
}
Есть ли способ явно загрузить использование, чтобы я мог получить тип ??