为什么对'Type'类型的对象进行反序列化需要一个描述类型本身?

时间:2011-10-06 06:23:19

标签: c# .net deserialization

我有一个带有插件的应用程序,它们是动态加载的。我将这些程序集中的类型保存在Type对象数组中。然后,当应用程序关闭时,它会通过序列化将此数组保存到文件中。应用程序启动时加载此文件并尝试反序列化它发生错误,因为包含这些类型中描述的类的程序集不可用。我无法理解为什么会发生这种情况:类型'Type'在mscorlib或类似的东西中。对象类型是否引用了它描述的类型?

1 个答案:

答案 0 :(得分:1)

考虑Type类型的Assembly属性。它返回对包含该类型的程序集的引用。为了获得该引用,必须加载程序集(可能“仅用于反射”)。同样地,你可以问一个类型的所有方法等等 - 如果没有汇编存在,你会期望它如何工作?

我认为Type 可以序列化,以便所有属性值仅在需要时填充,因此可以有一个Type对象引用了一个丢失的程序集中的类型......但它会很奇怪。

也许您应该保留完全限定类型的名称而不是Type本身,如果这是您想要的全部依赖?