我需要在刚刚从.NET 2.0升级的.NET 4.0项目中反序列化一堆XML文件。因为序列化函数have changed,反序列化现在失败了,因为我的类继承的第三方对象库中的一堆属性没有用[XmlIgnore]标记。
问题:我可以使用反射从.NET 4.0项目中调用2.0版本的System.Xml.dll中的Deserialize()函数吗?
我试过了:
Assembly.Load("System.Xml, Version=2.0.0.0, PublicKeyToken=b77a5c561934e089");
但是FileNotFoundException失败了(它会搜索GAC,对吗?)
答案 0 :(得分:1)
你不能--AFAIK。
为项目设置目标框架时,就是这样。您可以获得System.Xml 2.0或4.0。
然而,我对2.0和4.0之间的序列化之间的区别感到困惑。肯定[XmlIgnore]
在那里有2.0?
答案 1 :(得分:1)
您可以编写一个针对framework2的wee dll来返回该类的v2版本,然后从中填充v4版本。在某处/ somehoe有一面旗帜,你可以在它们装载时翻转它们。
你确定为什么反序列化会失败,我已经预料到它会向后兼容,事实上它不是那么可怕......