当前位置:  开发笔记 > 编程语言 > 正文

为什么我不能在一个接口中放一个委托?

如何解决《为什么我不能在一个接口中放一个委托?》经验,为你挑选了4个好方法。

为什么我不能在我的界面中添加委托?



1> eglasius..:

您可以使用以下任何一种:

public delegate double CustomerDelegate(int test);
public interface ITest
{
    EventHandler MyHandler{get;set;}
    CustomerDelegate HandlerWithCustomDelegate { get; set; }
    event EventHandler MyEvent;
}


很难理解像Func 这样的参数.为该签名命名更有意义.
为什么在只使用Func 时创建CustomerDelegate?
在COM中工作时,您实际上必须使用自己的委托,因为您无法编组Func <>,EventHandler <>,Action <>等泛型类型.

2> Jonathan All..:

委托只是另一种类型,因此您不会通过将其置于界面中来获得任何东西.

您不需要创建自己的代理.大多数情况下,您应该只使用EventHandler,Func,Predicate或Action.

请问您的代表是什么样的?


这个答案实际上也解决了我的问题,即在我想使用它们的情况下,我永远找不到使用委托的好方法.即不要使用'm :).

3> Matt..:

这是一个代表TYPE decalaration ...

public delegate returntype MyDelegateType (params)

这不能在接口中声明,因为它是一个类型声明

但是使用上面的类型声明,您可以使用委托实例

MyDelegateType MyDelegateInstance ( get; set;)

所以委托实例没问题,但委托类型声明不是(在界面中)



4> cgreeno..:

甲代表是一个类型,其不能在界面中声明.您可能希望使用事件(如果适用)或在接口外部但在同一名称空间中声明委托.

此链接可能有所帮助 - 何时使用代理而不是接口

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有