我希望创建一个自定义 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/