加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 23:53:15 所属栏目:百科 来源:网络整理
导读:假设您获得了一个由以下简单代码编译的Class.dll程序集: namespace ClassLibrary{ public class Class { }} 并考虑使用上述Class.dll作为项目引用的不同项目,并使用以下代码: Assembly assembly = Assembly.LoadFrom(@"Class.dll");Type reflectedType = a
假设您获得了一个由以下简单代码编译的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);

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

如果我用System.Text.RegularExpressions.Regex类和带有System.dll的Class.dll替换ClassLibrary.Class,断言会成功,所以我猜它与项目属性有关吗?一些编译开关也许?

提前致谢

解决方法

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读