Переопределение как события Clicked, так и соответствующего ему OnClicked вызывает ошибку времени компиляции - PullRequest
1 голос
/ 29 мая 2020

Derived3 вызывает ошибку времени компиляции:

Ошибка CS0070 Событие Base.Clicked может появляться только слева от + = или - = (кроме случаев, когда используется из в типе 'Base')

public class Base
{
    public virtual event EventHandler Clicked;

    public void Click()
    {
        OnClicked();
    }

    protected virtual void OnClicked()
    {
        Clicked?.Invoke(this, EventArgs.Empty);
    }
}

public class Derived : Base
{
    public override event EventHandler Clicked
    {
        add { base.Clicked += value; }
        remove { base.Clicked -= value; }
    }
}

public class Derived2 : Base
{
    public override event EventHandler Clicked;

    protected override void OnClicked()
    {
        Clicked?.Invoke(this, EventArgs.Empty);
    }
}


public class Derived3 : Base
{
    public override event EventHandler Clicked
    {
        add { base.Clicked += value; }
        remove { base.Clicked -= value; }
    }

    protected override void OnClicked()
    {
        Clicked?.Invoke(this, EventArgs.Empty);
    }
}

Вопрос

Почему нам не разрешено переопределять как событие Clicked, так и метод OnClicked, как в классе Derived3?

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