gpt4 book ai didi

C# - 创建一个可以接受任意数量参数的 EventHandler

转载 作者:可可西里 更新时间:2023-11-01 08:38:22 30 4
gpt4 key购买 nike

我希望创建一个自定义的 EventHandler,它可以将任意数量的对象作为其参数,并且它获取的对象是事先不知道的。

我知道我可以给它传递一个 Object[] 但我想要的是类似于

MyEventHandler someCustomEvent(Object obj1, Object obj2, Object obj3)

如果需要,对象的数量可以是 0 或 10。

编辑:

所以感谢我得到的评论和答案,我来到这里,

public class FinishedEventArgs : EventArgs {
public Object[] Args{ get; set; }
}

protected void OnFinished(params Object[] args) {
if(this.Finished != null) {
this.Finished(this, new FinishedEventArgs() {
Args = args
});
}
}

它看起来可以接受吗?

最佳答案

EventHandler只是一个代表。

您可以像这样创建委托(delegate):

public delegate void Foo(params object[] args);

和事件:

public event Foo Bar;

你最终会触发这样的事件:

Bar(1, "");

但是,正如@Kent Boogaart 所说,您应该使用 EventHandler<TEventArgs> 创建事件,所以更好的方法是创建类:

public class MyEventArgs : EventArgs
{
public MyEventArgs(params object[] args)
{
Args = args;
}

public object[] Args { get; set; }
}

和事件:

public event EventHandler<MyEventArgs> Bar2;

所以你会触发这样的事件:

Bar2(this, new MyEventArgs(1, ""));

关于C# - 创建一个可以接受任意数量参数的 EventHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3994666/

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