如何知道对象是否是通过XML中的反序列化形成的

本文关键字:反序列化 XML 何知道 对象 是否是 | 更新日期: 2023-09-27 18:19:48

有没有办法知道对象是否是从C#中的XML文件反序列化的?如果我的对象被反序列化,我想做的是对它进行后处理。是否有任何函数或属性提供了这一点?

如何知道对象是否是通过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;
相关文章: