我正在尝试通过XML序列化加载一个对象树,此时它将加载对象,并非常愉快地创建树.我的问题围绕着这些类支持一定级别的审计这一事实.我希望能够做的是在每个对象加载完成后调用一些方法.
为了论证,假设我有一个相当通用的对象树,在不同的级别有不同的类,如:
<Customer name="Foo Bar Inc.">
<Office IsHq="True">
<Street>123 Any Street</Street>
<Town name="Anytown">
<State name="Anystate">
<Country name="My Country" />
</State>
</Town>
</Office>
<Office IsHq="False">
<Street>456 High Street</Street>
<Town name="Anycity">
<State name="Anystate">
<Country name="My Country" />
</State>
</Town>
</Office>
</Customer>
Run Code Online (Sandbox Code Playgroud)
有没有办法使用默认的序列化器(以类似的方式创建类似的方法ShouldSerializeFoo)来确定每个对象的加载何时完成?
编辑:
我应该指出,暴露类似于反序列化后OnLoaded()我可以调用的方法的明显案例,让我感到"不好做".
编辑2:
为了讨论这是我当前的黑客 "方法",它适用于基本级别,但子城市节点仍然认为它需要随着更改保存(在现实世界中,对象模型要复杂得多) ,但这至少会编译,而不需要完整的源代码)
public class Office
{
[XmlAttribute("IsHq")]
public bool IsHeadquarters { get; set; }
[XmlElement]
public string Street { get; set; }
[XmlElement]
public Town Town { get; set; …Run Code Online (Sandbox Code Playgroud) 我有一个包含许多字段的类,这些字段通常在构造函数中从类中的其他数据计算出来.它们未被序列化为XML,因为对其余数据的任何更改都可能需要重新计算.
有没有办法设置函数调用以在反序列化时触发?