如果我只有类名和 dll 名,如何获取完全限定的程序集引用

本文关键字:获取 程序集 引用 何获取 dll 如果 | 更新日期: 2023-09-27 18:33:35

我有一个在紧凑框架 3.5 中运行的应用程序,并且必须通过网络将信息发送到运行 4.0 框架的服务。 具体来说,我正在传递有关异常的信息。 我需要能够使用类名和程序集名创建指定异常的新实例。

我正在使用Activator.CreateInstance((来创建对象,并且我计划使用Type.GetType((来获取对4.0框架中相应类型的引用。 但是,我无法弄清楚如何仅从类名和程序集名称中获取类型引用(或完全限定的程序集名称以获取类型引用((因为我不知道 4.0 程序集中的 PublicKeyToken(。

我意识到我可以作弊并将一些信息存储在我的服务中以进行翻译,但我正在寻找一种完全动态的数据查找,不涉及硬编码任何标记或版本字符串。

我正在使用ProtoBuf-Net通过网络序列化/反序列化我的数据。 我只是序列化 Type 值本身,但我发现这适用于某些异常类型,而不适用于其他类型,因此我求助于传递类和程序集的字符串名称,因为我知道字符串将兼容两种不同的框架类型/版本之间的序列化。 具体来说,我在传递类型值时遇到的第一个异常是System.Net.WebException。

如果我只有类名和 dll 名,如何获取完全限定的程序集引用

您只需

编写System.Web,Fusion(CLR 的程序集加载器(就会为您找到匹配的程序集。
不需要版本或公钥令牌。

例如:

Type.GetType("System.Web.HttpException, System.Web")