egl*_*ius 34
您可以使用以下任何一种:
public delegate double CustomerDelegate(int test);
public interface ITest
{
EventHandler<EventArgs> MyHandler{get;set;}
CustomerDelegate HandlerWithCustomDelegate { get; set; }
event EventHandler<EventArgs> MyEvent;
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*len 24
委托只是另一种类型,因此您不会通过将其置于界面中来获得任何东西.
您不需要创建自己的代理.大多数情况下,您应该只使用EventHandler,Func,Predicate或Action.
请问您的代表是什么样的?
这是一个代表TYPE decalaration ...
public delegate returntype MyDelegateType (params)
Run Code Online (Sandbox Code Playgroud)
这不能在接口中声明,因为它是一个类型声明
但是使用上面的类型声明,您可以使用委托实例
MyDelegateType MyDelegateInstance ( get; set;)
Run Code Online (Sandbox Code Playgroud)
所以委托实例没问题,但委托类型声明不是(在界面中)
文档清楚地说明您可以在接口中定义委托:
接口仅包含方法、委托或事件的签名。
但是,在同一页面的注释中,它说接口可以包含方法、属性、索引器和事件的签名。
如果您尝试在接口中放置委托,编译器会说“接口不能声明类型”。
Ecma-334 标准(8.9 接口)同意该页和编译器上的注释。