나는 종종 다른 복잡한 개체의 컬렉션을 가지고있는 다양한 복잡한 개체가 있습니다. 때로는 콜렉션이 필요할 때만 콜렉션을로드하려고하므로 콜렉션이로드되었는지 (null/empty가 반드시로드되지 않았 음을 의미하는 것은 아닙니다) 추적하는 방법이 필요합니다. 이렇게하려면 이러한 복잡한 개체가로드 된 컬렉션의 컬렉션을 유지 관리하는 클래스에서 상속합니다. 그리고 우리는 단지 우리가 지금처럼 추적 할 각 컬렉션에 대한 세터의 함수에 대한 호출을 추가해야합니다XmlSerializer 및 OnSerializing/OnSerialized 대안
public List<ObjectA> ObjectAList {
get { return _objectAList; }
set {
_objectAList = value;
PropertyLoaded("ObjectAList");
}
}
PropertyLoaded 기능은 컬렉션이로드되어있는 추적 컬렉션을 업데이트합니다.
불행히도 이러한 객체는 웹 서비스에서 사용되며 (de) 직렬화되고 모든 setter가 호출되고 실제로 PropertyLoaded가 호출되지 않으면 호출됩니다.
이상적으로 나는 OnSerializing/OnSerialized를 사용할 수 있기를 원합니다. 그래서 함수가 합법적으로 호출되는 경우 함수가 알고 있지만 XmlSerializer를 사용하면 이것이 작동하지 않습니다. DataContractSerializer를 사용하여 변경하고 싶은만큼 여러 가지 이유로 지금은 할 수 없습니다.
직렬화가 발생하는지 알아볼 다른 방법이 있습니까? 그렇지 않다면 새로운 컬렉션을 추적해야 할 때마다 별도의 코드를 작성하지 않고도 위의 작업을 수행 할 수있는 더 좋은 방법이 있습니까?