gpt4 book ai didi

c# - Assembly.GetType() 和 typeof() 返回不同的类型?

转载 作者:行者123 更新时间:2023-11-30 13:29:23 25 4
gpt4 key购买 nike

假设您有一个由以下简单代码编译而成的 Class.dll 程序集:

namespace ClassLibrary
{
public class Class
{
}
}

并考虑将上述 Class.dll 作为项目引用并使用以下代码的不同项目:

Assembly assembly = Assembly.LoadFrom(@"Class.dll");

Type reflectedType = assembly.GetType("ClassLibrary.Class");
Type knownType = typeof(ClassLibrary.Class);

Debug.Assert(reflectedType == knownType);

断言失败,我不明白为什么。

如果我将 ClassLibrary.Class 替换为 System.Text.RegularExpressions.Regex 类并将 Class.dll 替换为 System.dll,则断言成功,所以我猜它与项目属性有关?也许是一些编译开关?

提前致谢

最佳答案

问题在于加载上下文:通过 .LoadFrom 加载的程序集与通过 Fusion (.Load) 加载的程序集保存在不同的“堆”中。这些类型实际上与 CLR 不同。检查this link从 CLR 架构师那里获取更多详细信息。

关于c# - Assembly.GetType() 和 typeof() 返回不同的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1528287/

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