在接口中声明EventHandler的子类(您已定义的)的代码语法是什么?
我在委托声明中创建了EventHandler子类MyEventHandler,但是你不能在接口中声明委托......
当我要求Visual Studio提取接口时,它将IMyClassName中的EventHandler称为MyClassName.MyEventHandler,这显然会对类型耦合造成严重破坏。
我假设有一种简单的方法可以做到这一点。我是否必须在单独的文件中显式声明我的事件处理程序?
答案 0 :(得分:25)
好吧,你需要定义args并可能在某处委托。你没有需要第二个文件,但我可能会推荐它......但是这些类可能不是嵌套,如果那是原始问题。< / p>
建议使用标准的“sender,args”模式;有两种cmmon方法:
1:分别声明一个event-args类,并在界面上使用EventHandler<T>
:
public class MySpecialEventArgs : EventArgs {...}
...
EventHandler<MySpecialEventArgs> MyEvent;
2:分别声明一个event-args类和委托类型:
public class MySpecialEventArgs : EventArgs {...}
public delegate void MySpecialEventHandler(object sender,
MySpecialEventArgs args);
....
event MySpecialEventHandler MyEvent;
答案 1 :(得分:15)
假设C#2.0或更高版本......
public class MyEventArgs: EventArgs
{
// ... your event args properties and methods here...
}
public interface IMyInterface
{
event EventHandler<MyEventArgs> MyEvent;
}