Переадресация событий различного типа
Я пытаюсь перенаправить события из одного класса в объекты, содержащиеся в нем (как описано здесь:Пересылка событий в C #). Тем не менее, события имеют другой тип.
Например, у меня есть классItem
который выставляетValueChanged
обработчик событий типаEventHandler
, КлассItemHaver
подвергаетEventHandler<StatusEventArgs>
, который должен стрелять всякий раз, когдаItem.ValueChanged
делает, но должен также предоставить дополнительную информацию. Как правильно реализоватьadd/remove
кItemValueChanged
объявление события?
В приведенном ниже коде будет ли лямбда-функция вadd
метод выполнения правильного действия, и если да, то как правильно обращаться сremove
?
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; }
}