Почему если делегат события определен в другом классе, то не получается создать генерацию события? - C#

Узнай цену своей работы

Формулировка задачи:

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

Решение задачи: «Почему если делегат события определен в другом классе, то не получается создать генерацию события?»

textual
Листинг программы
  1. public delegate void StateEventHandler(State state);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы