我有一个应用程序,我通过读取插件的 DLL 文件然后使用AppDomain.CurrentDomain.Load(bytes)
. 请注意,应用程序和插件加载在同一个 AppDomain 中。该插件包含几个类,它们使用静态构造函数在服务定位器系统中注册自己。
后来,我的主应用程序尝试使用服务定位器查找并实例化这些服务类之一,但找不到该类。通过手动检查,我可以看到定位器中存在注册表项,因此它已注册,但由于某种未知原因,类型不相等。
然后我在类型注册的地方放了一个断点,发现了以下奇怪的地方:
怎么可能typeof(IViewFor<CompactDashboardViewModel>)不等于自己?
然后我又测试了一些东西:
t == t
true
typeof(IViewFor<CompactDashboardViewModel>) == typeof(IViewFor<CompactDashboardViewModel>)
true
t.AssemblyQualifiedName == typeof(IViewFor<CompactDashboardViewModel>).AssemblyQualifiedName
true
实际上,这两个 Type 对象的所有内容似乎都是相等的,除了m_handle和m_cache字段。
typeof(IViewFor<CompactDashboardViewModel>).TypeHandle
{System.RuntimeTypeHandle}
Value: 0x08690784
m_type: {Name = "IViewFor`1" FullName = "ReactiveUI.IViewFor`1[[PluginMTSICS.ViewModel.CompactDashboardViewModel, PluginMTSICS, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"}
t.TypeHandle
{System.RuntimeTypeHandle}
Value: 0x0f8cf5a8
m_type: {Name = "IViewFor`1" FullName = "ReactiveUI.IViewFor`1[[PluginMTSICS.ViewModel.CompactDashboardViewModel, PluginMTSICS, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"}
有人知道这里发生了什么吗?我正在使用 .NET 4.7.1。我正在尝试创建一个 MCVE,但到目前为止没有成功。
湖上湖
潇潇雨雨
相关分类