Почему если делегат события определен в другом классе, то не получается создать генерацию события? - C#
Формулировка задачи:
В проекте №1 объявлен делегат для события:
А в своем проекте №2 я в классе создаю событие с типом этого делегата:
Так вот, среда ругается со следующей ошибкой:
Я не пойму, почему оно ругается, если как раз то исключение, что указанно в скобках, выполняется! Я написал этот код внутри класса, в котором это событие объявлено! Среда он сама говорит, что такое возможно только в середине типа 'TrafficController.Controller' и при этом же сама себе противоречит не позволяя этого сделать. Ничего не пойму...
Обнаружил, что все работает норм, если объявление делегата перенести в класс, в котором объявляется событие. Но стоит только перенести делегат туда, куда мне надо(в другой класс), как среда начинает ругаться... Почему?!?!?
delegate void StateEventHandler(State state);
public class Controller { public event StateEventHandler StateChanged; //... other code private void SomeMethod() { state = бла бла бла; if(StateChanged != null) StateChanged(state); } }
The event 'TrafficController.Controller.StateChanged' can only appear on the left hand side of += or -= (except when used from within the type 'TrafficController.Controller')
Решение задачи: «Почему если делегат события определен в другом классе, то не получается создать генерацию события?»
textual
Листинг программы
public delegate void StateEventHandler(State state);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д