Если у меня есть ClassA, у которого есть публичное событие, SomeEvent и ClassC, у которого есть метод, addListener, который принимает ссылку EventHandler, почему у ClassB нет строки, которая говорит c.addListener(ref a.SomeEvent)? Если я попробую, я получу ошибку компилятора, которая говорит: "Событие" ClassA.SomeEvent "может появляться только в левой части + = или - = (кроме случаев, когда оно используется в классе" ClassA ").
Почему это ограничение существует? И как я могу обойти его, находясь достаточно близко к моей структуре?
Я новичок С#; любая помощь будет оценена по достоинству. Спасибо!
class ClassA {
public event EventHandler SomeEvent;
}
ClassB{
public ClassB() {
ClassA a = new ClassA();
ClassC c = new ClassC();
c.addListener(ref a.SomeEvent); //Compile error
}
}
class ClassC {
public void addListener(ref EventHandler handler) {
handler += onEvent;
}
private void onEvent(object sender, EventArgs e) {
//do stuff
}
}