我有各种复杂的对象,这些对象通常包含其他复杂对象的集合。有时我只想在需要时加载集合,因此我需要一种方法来跟踪集合是否已加载(空/空并不一定意味着它尚未加载)。为此,这些复杂对象从维护加载集合的集合的类继承。然后我们只需要在 setter 中为我们想要跟踪的每个集合添加一个函数调用,如下所示:
public List<ObjectA> ObjectAList {
get { return _objectAList; }
set {
_objectAList = value;
PropertyLoaded("ObjectAList");
}
}
PropertyLoaded 函数更新一个集合,该集合跟踪已加载的集合。
不幸的是,这些对象在 Web 服务中使用,因此被(反)序列化,并且所有设置器都被调用,而 PropertyLoaded 在实际上没有被调用时被调用。
理想情况下,我希望能够使用 OnSerializing/OnSerialized 以便该函数知道它是否被合法调用,但是我们使用 XmlSerializer 所以这不起作用。尽管我很想改用 DataContractSerializer,但由于各种原因,我目前无法这样做。
有没有其他方法可以知道序列化是否正在发生?如果没有,或者是否有更好的方法来实现上述目标,而无需在每次需要跟踪新集合时都添加额外的代码?