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