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

questionAnswers(1)

yourAnswerToTheQuestion