Encaminhando eventos de tipo diferente
Estou tentando encaminhar eventos de uma classe para objetos contidos nela (conforme descrito aqui:Encaminhando eventos em C #) No entanto, os eventos são de tipo diferente.
Por exemplo, eu tenho uma classeItem
que expõe umValueChanged
manipulador de eventos do tipoEventHandler
. A classeItemHaver
expõe umEventHandler<StatusEventArgs>
, que deve disparar sempreItem.ValueChanged
fornece, mas também deve fornecer informações adicionais. Como faço para implementar corretamenteadd/remove
aoItemValueChanged
declaração de evento?
No código abaixo, a função lambda no diretórioadd
O método executa a ação correta e, nesse caso, qual é a maneira correta de lidar com oremove
?
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; }
}