0

私がこのクラスを持っているとしましょう:

[XmlType]
public class TestModel : BindableBase
{
    private int _id;

    [XmlElement(Order = 7)]
    public int Id
    {
        get
        {
            return _id;
        }
        set
        {
            SetProperty(ref _id, value);
        }
    }
}

私は多くのシリアライゼーションとデシリアライゼーションを行っています (newtonsoft を使用した Json との間、および protobuf を使用したバイト配列との間) SetProperty

基本的に、私は次のようなものを持ちたいと思っています:

[XmlElement(Order = 7)]
public int Id
{
    get
    {
        return _id;
    }
    set
    {
        if(!serializing) 
            SetProperty(ref _id, value);
        else
            _id = value;
    }
}

これを実行したい理由は、1 つ目はOnPropertyChanged逆シリアル化中にイベントを発生させる必要がないこと、2 つ目はパフォーマンスの面でコストがかかるためです。

OnDeserializingandを使用しOnDeserializedてフラグを設定しようとしましたOnDeserializedが、逆シリアル化がいつ終了したかを知らせてくれますが、で装飾されたメソッドはOnDeserializing逆シリアル化の直前ではなく操作中に呼び出されます。

このコードはポータブル クラス ライブラリ アセンブリに含まれているため、使用できませんSerializationContext

手がかり/ヒントは大歓迎です!

4

1 に答える 1