【发布时间】:2010-09-21 19:49:31
【问题描述】:
我正在阅读有关 genrics 的 msdn 库主题。有一个用泛型委托声明事件的例子,但它正确吗?
// Code block 8. Generic event handling
public delegate void GenericEventHandler<S,A>(S sender,A args);
public class MyPublisher
{
public event GenericEventHandler<MyPublisher,EventArgs> MyEvent;
public void FireEvent()
{
MyEvent(this,EventArgs.Empty);
}
}
public class MySubscriber<A> //Optional: can be a specific type
{
public void SomeMethod(MyPublisher sender,A args)
{...}
}
MyPublisher publisher = new MyPublisher();
MySubscriber<EventArgs> subscriber = new MySubscriber<EventArgs>();
publisher.MyEvent += subscriber.SomeMethod; // is this line correct?
我们可以直接将方法应用于事件,而不用我们的委托先包装它吗?
【问题讨论】:
-
你的问题没有意义。没有委托就不能声明事件,无论它是否是通用的。
-
你试过编译这个吗?这可能就是你的答案。
-
这对我来说很好。它没有做你想做的事吗?
-
我问为什么要声明最后一行:publisher.MyEvent +=subscriber.SomeMethod;,而不是 publisher.MyEvent += GenericEventHandler (subscriber.SomeMethod);
标签: c# events generics delegates