Передача события из класса C через класс B в класс A - PullRequest
12 голосов
/ 03 апреля 2012

У меня есть класс A, который реализует большое количество экземпляров класса B. Класс B инкапсулирует экземпляр класса C.

Класс вызывает события, которые должны быть обработаны классом А. Класс A не должен знать о классе C. Класс C передает обратно статистику, основанную на производительности, которую затем необходимо объединить.

Как мне создать события в классе B и соединить их так, чтобы класс A мог подписаться на события класса B и получать события из класса C?

1 Ответ

24 голосов
/ 03 апреля 2012

Событие - это не что иное, как пара методов, обертывающих поле делегата.Вы можете переопределить реализацию по умолчанию методов добавления и удаления в ClassB, чтобы передать значение непосредственно событию в ClassC:

public class ClassB
{
    private ClassC m_C = new ClassC();

    public event EventHandler MyEvent
    {
        add { m_C.MyEvent += value; }
        remove { m_C.MyEvent -= value; }
    }
}
...