有什么方法可以在现有委托(delegate)类型的基础上创建新的委托(delegate)类型?就我而言,我想创建一个委托(delegate) MyMouseEventDelegate
这将具有与 EventHandler<MouseEventArgs>
相同的功能.
我为什么要这个?当然是利用编译时类型检查!这样,我可以有两个不同的委托(delegate):MyRightClickHandler
和 MyLeftClickHandler
, 永远不要混淆这两个 - 即使它们在功能上都与 EventHandler<MouseEventArgs>
相同.
有语法来做这种事吗?
哦,代码如下:
using MyRightClickHandler = EventHandler<MouseEventArgs>
还不够好。它不进行任何类型检查,因为它实际上并没有创建新类型。而且我必须将这样的一行粘贴到我要引用的每个代码文件中 MyRightClickHandler
.
最佳答案
好吧,这就像从原始文件中复制委托(delegate)声明一样简单。 C# 中没有任何东西可以自动执行此操作,但我看不出这是一个很大的负担:
public delegate void MyLeftClickHandler(object sender, MouseEventArgs e);
public delegate void MyRightClickHandler(object sender, MouseEventArgs e);
MouseEventHandler
不会很快改变......
您是否真的因为在错误的地方使用错误的委托(delegate)而被错误咬伤?我不记得自己曾经发现过这个问题,在我看来,您正在引入更多工作(以及其他开发人员不熟悉的一组委托(delegate))- 您确定值得吗?
关于c# - 如何在 C# 中基于现有委托(delegate)类型创建新的委托(delegate)类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/861835/