Come restituire un articolo da un gestore di eventi personalizzati
Domanda
Un progetto su cui sto lavorando mi richiede di essere in grado di licenziare un evento ogni volta che un articolo viene aggiunto a un elenco. Per raggiungere questo obiettivo, ho creato una classe di elenco personalizzata che eredita dall'elenco e ho aggiunto un evento ONAdd. Voglio anche restituire l'elemento aggiunto come eventArgs per il quale ho aggiunto un po 'di codice (indicato di seguito):
public class ClientListObservable<Client>:List<Client>
{
public event EventHandler<EventArgs<Client>> OnAdd;
public void Add(Client item)
{
if (null != OnAdd)
{
OnAdd(this, new EventArgs<Client>(item));
}
base.Add(item);
}
}
public class EventArgs<Client> : EventArgs
{
public EventArgs(Client value)
{
m_value = value;
}
private Client m_value;
public Client Value
{
get { return m_value; }
}
}
Ecco come aggiungo un gestore
clientList.OnAdd += new EventHandler<EventArgs<Client>>(clientList_OnAdd);
Ma, nel metodo ONAdd:
private void clientList_OnAdd(object sender, EventArgs e)
{
//want to be able to access the data members of the Client object added
}
Posso accedere solo a E.Equals, E.GeThashCode, E.GetType ed E.ToString e nessuno dei membri della classe client.
Nessuna soluzione corretta
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow