2

それ以外の場合は、この投稿で指摘されている以外に、XmlSerializerが逆シリアル化を開始する直前に行動したいと思います(逆シリアル化が終了したときではありません)

背景:を実装するbaseClassがありますINotifyPropertyChanged。このBaseClassは、xmlとしてデータベースに保存され、取得されると、オブジェクトインスタンスに逆シリアル化されます。デシリアライズは、ChangeNotificationが行われるこのクラスのセッターを実行します。changenotificationの集中ハンドラーで、オブジェクトのステータスを設定し、変更を元に戻すためにスタックを追跡します。どうやら私はこれらが逆シリアル化の間にトリガーされることを望まない。

どんなアイデアでも大歓迎です!

4

2 に答える 2

2

XmlSerializerは、シリアル化コールバックをサポートしていません。1つのオプションはIXmlSerializableを使用することですが、それは多くの作業です。いくつかの単純なケースでは、DataContractSerializerが実行可能なオプションである可能性があります。cllbacksをサポートしますが、多くのXMLシナリオをサポートしません(特に、属性なし)。

運が悪い可能性があります。その場合は、別のDTOとドメインタイプを検討してください。たとえば、にデシリアライズしてFooDtoから、値をにコピーして、これがシリアル化Fooによるものであることを手動で通知できます。

于 2011-03-07T15:02:47.977 に答える
1

コメントしたように@マークのソリューション。現在最も実用的な方法(私は複雑な機能の大きなチャンクの概念実証を開発しています)は、単純なパブリックボイドで逆シリアル化された後にオブジェクトをデフォルト設定することです。このメソッドでは、UNDOスタックを空にして、オブジェクトのステータスを変更しないように設定できます。

もっと良いアイデアが浮かんだら、ここに投稿します。

于 2011-03-08T09:30:46.360 に答える