我正在处理的项目要求我每次将项目添加到列表时都能够触发事件。为了实现这一点,我创建了一个自List继承的自定义List类并添加了一个OnAdd事件。我也想回报的项目被添加为我增加了一些更多的代码(如下)EventArgs的:如何从自定义事件处理程序返回项目
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; }
}
}
这是我如何添加一个处理
clientList.OnAdd += new EventHandler<EventArgs<Client>>(clientList_OnAdd);
但是,在使用onAdd方法:
private void clientList_OnAdd(object sender, EventArgs e)
{
//want to be able to access the data members of the Client object added
}
我只能访问e.Equals,e.GetHashCode,e.GetType和e.ToString,没有客户端类的成员。
类声明不起作用,在那里......这里不是`EventHandler`。没有`EventArgs `。请参阅:http://stackoverflow.com/questions/3312134/does-net-have-a-built-in-eventargst –
2011-02-09 19:44:46
@Reed,我知道 - 我曾假设OP已经自己写了这个变体(他的代码显示他做到了。) – 2011-02-09 20:31:29