0

次のようなものがあります。

public class MyClass
{
    private List<MyOjectMapping> mappings;

    public void Start()
    {
        foreach (var mapping in mappings)
        {
            mapping.ObjectA.PropertyA.PropertyChanged += (s, e) =>
            {
                // do something with mapping.ObjectB
            };
        }
    }

    public void Stop()
    {
        // unhook events
    }
}

public class MyObject : INotifyPropertyChanged
{
    public object PropertyA;
    public object PropertyB;
}

public class MyOjectMapping
{
    public object SomeSortOfKey;
    public MyObject ObjectA;
    public MyObject ObjectB;
}

ご覧のとおり、ラムダ イベント ハンドラー内の foreach イテレーターで何らかのアクションを実行しようとしています。これは機能しますが、このようにすると、Stop() メソッドでイベントをフック解除する方法がわかりません。

PropertyChanged イベントをフックして、後でフックを解除して foreach イテレータにアクセスできるようにするにはどうすればよいですか?

ありがとう

4

1 に答える 1