1
有什么办法来知道对象是否从C#中的XML文件反序列化? 我想要做的是对我的对象进行后处理,如果它是反序列化的。 有没有任何功能或财产规定?如何知道对象是通过XML中的反序列化形成的?
有什么办法来知道对象是否从C#中的XML文件反序列化? 我想要做的是对我的对象进行后处理,如果它是反序列化的。 有没有任何功能或财产规定?如何知道对象是通过XML中的反序列化形成的?
如果您的意思是“by XmlSerializer
”,那么:不,通常不会。
“序列化回调”的概念存在(预序列化,序列化后,前反序列化,-反序列化后),很好地理解和享受每串我能想到的支持...... 除了XmlSerializer
,根本不支持。你在XmlSerializer
得到的主要拦截点是如果类型实现IXmlSerializable
,但如果你这样做,你需要做全部你自己的工作,它是:hard(加上你失去了模式支持)。
你最好的办法是在你致电Deserialize
后明确运行一个方法。如果你需要做这个通用的话,或许把方法的接口上,让你的反序列化的代码基本上做:
var newObj = serializer.Deserialize(source);
var forCallback = newObj as ISerializationCallbacks; // <== you define this
if(forCallback != null) forCallback.AfterDeserialize();
return newObj;
谢谢,但如何对内部对象? – user2302005
@ user2302005除非它已经改变,你不能;除非我完全错误,当然。那么,当然你可以手动探索树。 –