0

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

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

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

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

4

1 回答 1

2

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

例如:

Type.GetType("System.Web.HttpException, System.Web")
于 2012-05-07T16:09:28.173 回答