Type.GetType()返回null

时间:2018-11-07 12:17:06

标签: c#

这些都返回null,我希望第一个起作用:

 Type.GetType("Namespace.To.My.Type, MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null")
 Type.GetType("Namespace.To.My.Type, MyAssembly")
 Type.GetType("Namespace.To.My.Type")

因此,在调试时,我尝试了以下方法:

var aqn = AppDomain.CurrentDomain.GetAssemblies()[92].GetType("Namespace.To.My.Type").AssemblyQualifiedName; // Namespace.To.My.Type, MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
Type.GetType(aqn)

(其中92MyAssembly

也返回null。

这是怎么回事?我的装配件仅是半装载的还是什么东西?当然不能,因为我可以这样做:

AppDomain.CurrentDomain.GetAssemblies()[92].GetTypes()[161]

并找到Namespace.To.My.Type,还有

AppDomain.CurrentDomain.GetAssemblies()[92].GetType("Namespace.To.My.Type")

更新

  • 值得一提的是,在上述代码之前,MyAssembly已通过Assembly.Load(path)加载
  • 我在控制台应用程序中
  • 我类型的AQN显示在上方的代码注释中,向右滚动
  • 如果我抛出GetType,它会抛出:“无法加载文件或程序集'MyAssembly'或其依赖项之一。系统找不到指定的文件。”

Fuslogvw输出:

  
    
      

FusionLog:“ ===预绑定状态信息=== \ r \ nLOG:DisplayName =命名空间.To.My.Type,MyAssembly,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null \ n(完全指定)\ r \ nLOG:Appbase = file:/// MyConsoleAppPath / bin / Debug / \ r \ nLOG:初始PrivatePath = NULL \ r \ n调用程序集:MyConsoleApp,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = null。\ r \ n === \ r \ nLOG:此绑定在默认的加载上下文中启动。\ r \ nLOG:使用应用程序配置文件:D:\ MyConsoleAppPath \ bin \ Debug \ MyConsoleApp.exe.Config.r \ nLOG:使用主机配置文件:\ r \ nLOG:使用来自C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ config \ machine.config的计算机配置文件。\ r \ nLOG:策略未应用于以下位置的引用这次(私有,自定义,部分或基于位置的程序集绑定)。\ r \ n

    
  

2 个答案:

答案 0 :(得分:0)

这是答案:Is it possible to use Type.GetType with a dynamically loaded assembly?

它是因为我已经通过Assembly.Load加载了程序集-尽管我仍然不明白为什么这会导致观察到的问题

答案 1 :(得分:0)

我已经遇到了这个问题。程序集的框架和项目的框架不一致,也许是您的情况。