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

Respuestas a la pregunta(1)

Su respuesta a la pregunta