如何知道对象是否是通过XML中的反序列化形成的
本文关键字:反序列化 XML 何知道 对象 是否是 | 更新日期: 2023-09-27 18:19:48
有没有办法知道对象是否是从C#中的XML文件反序列化的?如果我的对象被反序列化,我想做的是对它进行后处理。是否有任何函数或属性提供了这一点?
如果你的意思是"通过XmlSerializer
",那么:不,通常不。
"序列化回调"的概念存在(预序列化、后序列化、预反序列化、后反序列化),我能想到的大多数序列化程序都很好地理解和支持它,XmlSerializer
除外,它根本不支持。在XmlSerializer
中获得的主要截获点是,如果类型实现了IXmlSerializable
,但如果实现了,则需要自己完成所有工作,这是:困难的(另外,您将失去模式支持)。
最好是在调用Deserialize
之后显式地运行一个方法。如果你需要使其通用,那么也许可以将该方法放在一个接口上,这样你的反序列化代码基本上就可以做到:
var newObj = serializer.Deserialize(source);
var forCallback = newObj as ISerializationCallbacks; // <== you define this
if(forCallback != null) forCallback.AfterDeserialize();
return newObj;