多くの場合、他の複雑なオブジェクトのコレクションを持つさまざまな複雑なオブジェクトがあります。必要なときにのみコレクションをロードしたい場合があるため、コレクションがロードされたかどうかを追跡する方法が必要です (null/empty は、必ずしもロードされていないことを意味しません)。これを行うために、これらの複雑なオブジェクトは、読み込まれたコレクションのコレクションを保持するクラスから継承します。次に、追跡したいコレクションごとにセッターに関数の呼び出しを追加する必要があります。
public List<ObjectA> ObjectAList {
get { return _objectAList; }
set {
_objectAList = value;
PropertyLoaded("ObjectAList");
}
}
PropertyLoaded 関数は、読み込まれたコレクションを追跡するコレクションを更新します。
残念ながら、これらのオブジェクトは Web サービスで使用されるため、(デ) シリアル化され、すべてのセッターが呼び出され、PropertyLoaded が実際には呼び出されていないときに呼び出されます。
理想的には、OnSerializing/OnSerialized を使用できるようにして、関数が正当に呼び出されているかどうかを認識できるようにしたいのですが、XmlSerializer を使用しているため、これは機能しません。DataContractSerializer を使用するように変更したいのですが、さまざまな理由で現時点では変更できません。
シリアル化が行われているかどうかを知る他の方法はありますか? そうでない場合、または代わりに、新しいコレクションを追跡する必要があるたびに追加のコードを作成することなく、上記を達成するためのより良い方法はありますか?