2013-06-24 30 views

回答

2

如果您的意思是“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; 
+0

谢谢,但如何对内部对象? – user2302005

+0

@ user2302005除非它已经改变,你不能;除非我完全错误,当然。那么,当然你可以手动探索树。 –