我有一个带有插件的应用程序,它们是动态加载的。我将这些程序集中的类型保存在Type对象数组中。然后,当应用程序关闭时,它会通过序列化将此数组保存到文件中。应用程序启动时加载此文件并尝试反序列化它发生错误,因为包含这些类型中描述的类的程序集不可用。我无法理解为什么会发生这种情况:类型'Type'在mscorlib或类似的东西中。对象类型是否引用了它描述的类型?
答案 0 :(得分:1)
考虑Type
类型的Assembly
属性。它返回对包含该类型的程序集的引用。为了获得该引用,必须加载程序集(可能“仅用于反射”)。同样地,你可以问一个类型的所有方法等等 - 如果没有汇编存在,你会期望它如何工作?
我认为Type
可以序列化,以便所有属性值仅在需要时填充,因此可以有一个Type
对象引用了一个丢失的程序集中的类型......但它会很奇怪。
也许您应该保留完全限定类型的名称而不是Type
本身,如果这是您想要的全部依赖?