gpt4 book ai didi

c# - 为什么这些 Type 对象不相等?

转载 作者:太空宇宙 更新时间:2023-11-03 14:51:17 24 4
gpt4 key购买 nike

我有一个应用程序,我通过读取插件的 DLL 文件然后使用 AppDomain.CurrentDomain.Load(bytes) 加载字节来加载插件。 .请注意,应用程序和插件加载在同一个 AppDomain 中。该插件包含几个类,它们使用静态构造函数在服务定位器系统中注册自己。

稍后,我的主应用程序尝试使用服务定位器查找并实例化这些服务类之一,但找不到该类。手动检查后,我可以看到注册表条目存在于定位器中,因此它已被注册,但由于某些未知原因,类型不相等。

然后我在类型注册的地方下了一个断点,发现了以下奇怪的地方:

Screenshot from in debugging

如何typeof(IViewFor<CompactDashboardViewModel>)不等于自己?

然后我又测试了一些东西:

t == t
true
typeof(IViewFor<CompactDashboardViewModel>) == typeof(IViewFor<CompactDashboardViewModel>)
true
t.AssemblyQualifiedName == typeof(IViewFor<CompactDashboardViewModel>).AssemblyQualifiedName
true

事实上,除了m_handle 之外,关于这两个Type 对象的一切似乎都是平等的。和 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,但到目前为止没有成功。

最佳答案

也许这行得通:

Type t = typeof(IViewFor<CompactDashboardViewModel>);
//this should evaluate to true:
bool result = t.Equals(typeof(IViewFor<CompactDashboardViewModel>));

Type.Equals 文档: https://msdn.microsoft.com/en-us/library/3ahwab82(v=vs.110).aspx

编辑:

看完这篇文章后Type Checking: typeof, GetType, or is?我希望这会起作用:

Type t = typeof(IViewFor<CompactDashboardViewModel>);
//this should evaluate to true:
bool result = t is IViewFor<CompactDashboardViewModel>;

关于c# - 为什么这些 Type 对象不相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51672984/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com