C#-创建一个可以接受任意数量参数的EventHandler [英] C# - Create an EventHandler that can take any number of parameters
问题描述
我希望创建一个自定义EventHandler,该事件处理程序可以将任意数量的对象作为其参数,并且事先不知道获取的对象.
I wish to create a custom EventHandler that can have any number of objects as its parameters and the objects it gets isn't known in advance.
我知道我可以将它传递给Object [],但是我想要的类似于
I know I can pass it an Object[] but what I would like is something similar to
MyEventHandler someCustomEvent(Object obj1, Object obj2, Object obj3)
其中对象的数量可以为0或10(如果需要).
where the number of objects can be 0 or 10 if needed.
感谢我的评论和回答,
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
仅仅是一个委托.
您可以这样创建委托:
public delegate void Foo(params object[] args);
事件:
public event Foo Bar;
您最终将发生以下触发事件:
You will end up with firing event like this:
Bar(1, "");
但是,正如@Kent Boogaart所说,您应该使用EventHandler<TEventArgs>
创建事件,因此更好的方法是创建类:
But, as @Kent Boogaart said, you should create events using EventHandler<TEventArgs>
, so better approach would be creating class:
public class MyEventArgs : EventArgs
{
public MyEventArgs(params object[] args)
{
Args = args;
}
public object[] Args { get; set; }
}
事件:
public event EventHandler<MyEventArgs> Bar2;
所以您将触发以下事件:
So you will fire event like this:
Bar2(this, new MyEventArgs(1, ""));
这篇关于C#-创建一个可以接受任意数量参数的EventHandler的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!