我使用 C# 和 Asp.Net Web Forms。
我了解了 Asp.Net 使用其“委托(delegate)模型”处理 GUI 对象事件的方式。
我同意在事件处理的其他上下文中使用“自定义委托(delegate)类型”是否有意义。
我的问题:
在现实世界中,除了事件处理之外,什么时候使用委托(delegate)类型会有用?示例:对于类中的验证字段?
在哪种架构中 Custom Delegate Type 最适合?
代理类型的优缺点?
感谢您抽出宝贵时间!
请您参考如下方法:
如果您完全使用 LINQ to Objects,那么您就是在使用委托(delegate)。 (如果您使用的是 EF 或类似的东西,那么您使用的是委托(delegate)类型的表达式树。)
如果您使用 MVC,您可能也在使用表达式树 (
@Html.For(x => ...))如果您曾经启动线程或任务,您将使用委托(delegate)。
基本上,它们非常适合以易于表达的方式表示单个操作。它们可以用作单一方法接口(interface)的替代方案,并且可以很好地为自定义行为提供 Hook 而不是使用继承。
自从 .NET 3.5 及其 Action 和 Func 委托(delegate)系列以来,我很少创建自定义委托(delegate)类型 - 基本上只有在考虑到可读性的情况下才这样做。
