Лучший способ связать события с объектом? - PullRequest
1 голос
/ 29 ноября 2009

У меня есть класс, в котором есть объект-член (переменная класса). Этот объект имеет несколько событий. Я хотел бы выставить эти события прямо в моем классе. Каков наилучший способ сделать это?

1 Ответ

2 голосов
/ 29 ноября 2009

Если вы хотите выставить события напрямую (без определения новых обработчиков, которые вы перенаправили бы своим подписчикам), вы можете сделать это:

class MyClass {

    private readonly OtherClass other = new OtherClass();

    public event EventHandler Click {
        add { other.Click += value; }
        remove { other.Click -= value; }
    }

}

Преимущество этого метода в том, что вам не нужно обрабатывать события из OtherClass и пересылать их как свои собственные. Недостаток (и причина, по которой я объявил поле «прочее» как доступное только для чтения) состоит в том, что любой, кто подключается к событию Click в MyClass, действительно косвенно подключается к событию Click в OtherClass. Таким образом, вы не захотите просто изменить другой экземпляр, потому что подписчики, которые уже обрабатывали событие, не будут вызываться.

...