1

ドメインモデルに2つのオブジェクト(両方ともシリアライズ可能)と1つのwinformコントロールがあります。最初のオブジェクトと winform コントロールは、2 番目のオブジェクトの同じイベントのリスナーです。最初のオブジェクトをリスナーとして、winform コントロール リスナーを使用せずに、2 番目のオブジェクトをシリアル化します。

class SecondObject
{ 
    public event EventHandler SomeEvent; 
}

class FirstObject
{
    SecondObject object;
    object.SomeEvent += secondObject_SomeEvent();
}

class WinFormControl
{
    SecondObject object;
    object.SomeEvent += secondObject_SomeEvent(); 
}

今、私はそうします:

class SecondObject
{ 
    [field: NonSerialized]
    public event EventHandler SomeEvent; 
}

class FirstObject
{
    SecondObject object;

    [OnDeserialized()]
    internal void SubscribeToEventsOnDeserialized(StreamingContext context)
    {
         object.SomeEvent += secondObject_SomeEvent();
    }       
}

しかし、NonSerialized イベントなしで実行できますか?

Ps 下手な英語で申し訳ありません。

4

1 に答える 1