不使用如何从引用的程序集中加载类型,但未在文件中使用

时间:2019-05-10 11:27:46

标签: c# reflection reference .net-assembly using

  • 我正在创建一个用于运行作业的中间件服务。
  • 我将拥有一个充满正在运行的作业的数据库。
  • 我想使用反射来获取可以完成工作的具体类,这样我就不必将每个工作硬编码为庞大的switch语句并实例化它们。
  • 完成工作的类与试图调用它的类位于不同的项目中。
  • 我用一些信息来构建FulllyQuailifiedAssemblyName以获得类型。
  • 试图将作业引用调用到该作业所在的项目的项目。
  • 所有项目都在.Net Framework 4.7.2中,并且只是普通库。

我知道一切正常,请参阅参考知识和.Net等版本。 好像我做

var assemblyname = typeof(Jobclass).AssemblyQualifiedName;

然后将其插入。

Type.GetType(assemblyname);

出来的类型是正确的。

似乎只有当我直接在代码中引用该类时,才会使用using,然后再加载类型。

但是,如果我只是尝试使用字符串来完成操作,我会从类型中获取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");
 }

有什么方法可以显式加载using,以便获取类型?

0 个答案:

没有答案