Weiterleitung von Ereignissen unterschiedlicher Art

Ich versuche Ereignisse von einer Klasse an darin enthaltene Objekte weiterzuleiten (wie hier beschrieben:Ereignisse in C # weiterleiten). Die Ereignisse sind jedoch von unterschiedlichem Typ.

Zum Beispiel habe ich eine KlasseItem das macht aValueChanged Ereignishandler des TypsEventHandler. Die KlasseItemHaver macht eineEventHandler<StatusEventArgs>, die wann immer feuern sollteItem.ValueChanged tut, sollte aber auch zusätzliche Informationen liefern. Wie setze ich das richtig um?add/remove zumItemValueChanged Ereigniserklärung?

In dem folgenden Code würde das Lambda in dem funktionierenadd Methode führen Sie die richtige Aktion, und wenn ja, was ist der richtige Weg, um dieremove?

class Item
{
    public event EventHandler ValueChanged;
}

class ItemHaver
{
    private int _status;
    private Item _item;

    public event EventHandler<StatusEventArgs> ItemValueChanged
    {
        add 
        { 
            _item.ValueChanged += value; // Wrong type
            _item.ValueChanged += 
                (obj, e) => value(obj, new StatusEventArgs(this._status));
        }
        remove 
        { 
            _item.ValueChanged -= // Does this even work?
                (obj, e) => value(obj, new StatusEventArgs(this._status));  
        }
    }
}

class StatusEventArgs : EventArgs
{
    int Status { get; private set; }
    StatusEventArgs(int status) { Status = status; }
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage