gpt4 book ai didi

c# - 如何从自定义事件处理程序返回项目

转载 作者:太空狗 更新时间:2023-10-30 00:16:51 25 4
gpt4 key购买 nike

我正在从事的一个项目要求我能够在每次将项目添加到列表时触发一个事件。为此,我创建了一个继承自 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,而不能访问 Client 类的任何成员。

最佳答案

将您的事件参数更改为:

public class ClientEventArgs : EventArgs
{
public ClientEventArgs(Client value)
{
m_value = value;
}

private Client m_value;

public Client Value
{
get { return m_value; }
}
}

然后:

    private void clientList_OnAdd(object sender, ClientEventArgs e)
{
Client client = e.Value;
}

关于c# - 如何从自定义事件处理程序返回项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4949619/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com