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