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
scroll top