Raise Eventos de clase base en clases derivadas C #
Tengo una clase base DockedToolWindow: Form, y muchas clases que derivan de DockedToolWindow. Tengo una clase contenedor que contiene y asigna eventos a los objetos DockedToolWindow, sin embargo, quiero invocar los eventos de la clase secundaria.
Realmente tengo una pregunta sobre cómo implementar lo que esteMSDN site me dice que haga. Esta sección a continuación me está dando el problema:
// 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);
}
}
Asegúrese de que este ejemplo se compila y funciona, pero cuando reemplazo "ShapeChanged" con "Move" (un evento que adquirí al derivar del Formulario), es un error decir que no puedo tener Move en el lado derecho sin + = o - =. También eliminé las etiquetas genéricas ShapeEventArgs.
¿Alguna incitación sobre por qué esto no funciona? ¿Cuál es la diferencia entre un evento declarado dentro de la clase y uno que se hereda?