Пропустить событие из класса C через класс B в класс A

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

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

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

Ответ 1

Событие - это не что иное, как пара методов, которые переносят поле делегата. Вы можете переопределить стандартную реализацию методов добавления и удаления в 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; }
    }
}