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

时间:2013-06-24 09:31:01

标签: c# xml deserialization xml-deserialization

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

1 个答案:

答案 0 :(得分:2)

如果您的意思是“by XmlSerializer”,那么:不,通常不是。

存在“序列化回调”的概念(预序列化,后序列化,反序列化,反序列化后),并且我能想到的大多数序列化器都能很好地理解和支持... XmlSerializer,但不支持 。您在XmlSerializer中获得的主要拦截点是,如果类型实现IXmlSerializable,但如果您这样做,则需要自己完成 all 工作,即:hard(plus)你失去了架构支持。)

您最好的选择是在致电Deserialize后明确地运行方法。如果你需要使这个通用,那么可能把方法放在一个接口上,这样你的反序列化代码基本上就可以了:

var newObj = serializer.Deserialize(source);
var forCallback = newObj as ISerializationCallbacks; // <== you define this
if(forCallback != null) forCallback.AfterDeserialize();
return newObj;