Reenvío de eventos de diferente tipo
Estoy tratando de reenviar eventos de una clase a objetos contenidos en ella (como se describe aquí:Reenvío de eventos en C #) Sin embargo, los eventos son de diferente tipo.
Por ejemplo, tengo una clase.Item
que expone unValueChanged
controlador de eventos de tipoEventHandler
. La claseItemHaver
expone unEventHandler<StatusEventArgs>
, que debe disparar siempreItem.ValueChanged
lo hace, pero también debe proporcionar información adicional. ¿Cómo implemento correctamenteadd/remove
alItemValueChanged
declaración de evento?
En el siguiente código, ¿funcionaría la lambda en eladd
realice la acción correcta y, de ser así, cuál es la forma correcta de manejarremove
?
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; }
}