如何在 C# 中基于现有委托类型创建新的委托类型?

2023-12-29

有什么方法可以基于现有的委托类型创建新的委托类型吗?就我而言,我想创建一个委托MyMouseEventDelegate其功能与EventHandler<MouseEventArgs>.

我为什么要这个?从中获利编译时类型检查, 当然!这样,我可以有两个不同的代表:MyRightClickHandler and MyLeftClickHandler,并且永远不会混淆两者 - 即使它们在功能上都相同EventHandler<MouseEventArgs>.

有语法可以做这种事情吗?

哦,还有这样的代码:

using MyRightClickHandler = EventHandler<MouseEventArgs>

还不够好。它不进行任何类型检查,因为它实际上并不创建新类型。我必须将这样一行粘贴到我要引用的每个代码文件中MyRightClickHandler.


嗯,就像从原始文件中复制委托声明一样简单。 C# 中没有任何东西可以自动执行此操作,但我不认为这是一个负担:

public delegate void MyLeftClickHandler(object sender, MouseEventArgs e);
public delegate void MyRightClickHandler(object sender, MouseEventArgs e);

这不像MouseEventHandler很快就会改变...

您是否真的因为在错误的地方使用了错误的委托而被错误所困扰?我不记得自己曾经发现过这个问题,在我看来,您正在引入更多的工作(以及其他开发人员的一组不熟悉的代表) - 您确定这值得吗?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 C# 中基于现有委托类型创建新的委托类型? 的相关文章

随机推荐