Soulever des Événements de Classe de Base dans les Classes Dérivées de C#

J'ai une classe de base DockedToolWindow : Forme, et de nombreuses classes qui dérivent de DockedToolWindow. J'ai une classe de conteneur qui contient et attribue les événements DockedToolWindow objets, mais je tiens à appeler les événements de la classe enfant.

En fait, j'ai une question sur la façon de mettre en œuvre ce que ce Site MSDN me dit de faire. Cette section ci-dessous donne moi le problème:

    //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);
        }
    }

Sûr cet exemple compile et fonctionne, mais lorsque je remplace "ShapeChanged" avec "Move" (un événement que j'ai acquis de dérivation à partir de la Forme), c'erreurs en disant: je ne peux pas le Déplacer sur le côté droit sans += ou -=. J'ai également supprimé les ShapeEventArgs générique balises.

Toute inciter sur les raisons de ce qui ne fonctionne pas? Quelle est la différence entre un événement déclaré au sein de la classe et celui qui est hérité?

OriginalL'auteur Game_Overture | 2009-04-23