Повышение событий базового класса в производных классах C #
У меня есть базовый класс DockedToolWindow: Form и многие классы, производные от DockedToolWindow. У меня есть контейнерный класс, который содержит и присваивает события объектам DockedToolWindow, однако я хочу вызывать события из дочернего класса.
У меня на самом деле есть вопрос о том, как реализовать то, что этоСайт MSDN говорит мне сделать. Этот раздел ниже дает мне проблему:
// The event. Note that by using the generic EventHandler<T> event type
// we do not need to declare a separate delegate type.
public event EventHandler<ShapeEventArgs> ShapeChanged;
public abstract void Draw();
//The event-invoking method that derived classes can override.
protected virtual void OnShapeChanged(ShapeEventArgs e)
{
// Make a temporary copy of the event to avoid possibility of
// a race condition if the last subscriber unsubscribes
// immediately after the null check and before the event is raised.
EventHandler<ShapeEventArgs> handler = ShapeChanged;
if (handler != null)
{
handler(this, e);
}
}
Конечно, этот пример компилируется и работает, но когда я заменяю «ShapeChanged» на «Move» (событие, которое я получил при извлечении из формы), это приводит к ошибкам, говоря, что у меня не может быть Move на правой стороне без + = или - =. Я также удалил общие теги ShapeEventArgs.
Кто-нибудь провоцирует, почему это не работает? В чем разница между объявленным в классе событием и наследуемым?