私のModelBaseクラスにINotifyPropertyChangedを実装しています。派生したすべてのクラスがINotifyPropertyChangedメソッドとイベントにアクセスできるようにします。Caliburn.Micro IsNotifyingプロパティをシリアル化しないでください。
IModelBaseインターフェイスでINotifyPropertyChangedExを実装し、ModelBaseクラスでPropertyChangedBaseを拡張することで、プロジェクトでCaliburn.Microを使用しています。
これはすべて機能しますが、PropertyChangedBaseのIsNotifyingプロパティがモデルでシリアル化されています。私はいくつかのことを試みましたが、シリアライズを止めることができませんでした。
ModelBaseでIsNotifyingをオーバーライドし、プロパティに[XmlIgnore]を追加しようとしました。私はまた、私のModelBaseクラスでnewキーワードを使ってIsNotifyingを隠してみました。どちらもうまくいきませんでした。
githubからPropertyChangedBaseコードをコピーし、それを自分自身のPropertyChangedBaseクラスに入れて、[XmlIgnore]をIsNotifyingプロパティに追加しました。これは機能しましたが、理想的ではありません。
アイデア?これはできますか? Caliburn.Micro PropertyChangedBaseを使用してスクラップし、自分で実装する必要がありますか? INotifyPropertyChangedを実装するのは難しくありません。私はすでにライブラリを使用しているので、Caliburn.Microでこれを使用しようとしていました。
これはこれは、出力あなたのSerializeObject<T>
方法で
<?xml version="1.0" encoding="utf-16"?>
<MyModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<IsNotifying>true</IsNotifying>
<SomeProperty>Test</SomeProperty>
</MyModel>
注意点としては、それはそのプロパティをシリアル化だという事実は、列車のスマッシュではありません。私のアプリケーションに問題はありません。そこに置くのはちょうどいいことではありません。他の人がXMLを使用する場合、そのプロパティを無視するように指示する必要があります。 – Marc