1

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

4

1 回答 1

2

如果您的意思是“按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;
于 2013-06-24T09:38:08.517 回答