Переопределенное событие остается исходным значением - PullRequest
0 голосов
/ 17 марта 2020

У меня проблема с переопределением события в C#. Я хочу, чтобы событие SubEventTest с переопределением OnMyEvent заменило EventTest 'OnMyEvent. Однако OnMyEvent на SubEventTest такой же, как на EventTest, даже при попытке использовать другие стандартные значения для EventTest OnMyEvent.

Вот код, показывающий мою проблему:

void Main()
{   
    SubEventTest subEventTest = new SubEventTest();
    subEventTest.Call(); // Null reference exception (should be Hello!)

    EventTest eventTest = new EventTest();
    eventTest.Call(); // Null reference exception (as expected)
}

public class EventTest
{
    public delegate void MyEventHandler();
    public void Call() => OnMyEvent();
    public virtual event MyEventHandler OnMyEvent = null;
}

public class SubEventTest : EventTest
{
    public override event MyEventHandler OnMyEvent =
        delegate ()
        {
            Console.WriteLine("Hello!");
        };
}

Ожидаемый результат:

Hello!
Null reference exception

Фактический результат:

Null reference exception

Почему это так и как я могу получить ожидаемый результат?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...