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

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

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

В проекте №1 объявлен делегат для события:
delegate void StateEventHandler(State state);
А в своем проекте №2 я в классе создаю событие с типом этого делегата:
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')
Я не пойму, почему оно ругается, если как раз то исключение, что указанно в скобках, выполняется! Я написал этот код внутри класса, в котором это событие объявлено! Среда он сама говорит, что такое возможно только в середине типа 'TrafficController.Controller' и при этом же сама себе противоречит не позволяя этого сделать. Ничего не пойму... Обнаружил, что все работает норм, если объявление делегата перенести в класс, в котором объявляется событие. Но стоит только перенести делегат туда, куда мне надо(в другой класс), как среда начинает ругаться... Почему?!?!?

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

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

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


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

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

6   голосов , оценка 4.333 из 5
Похожие ответы