![](/img/trans.png)
[英]what would I use in this situation(asp.net mvc 3 display templates)
[英]When would I use a delegate in asp.net?
我一直在寻找一种方法来使用我能使用的所有工具,并让自己超越我所处的位置。 但是,尽管我读过很多关于委托的内容,但我永远找不到使用它们的地方(比如接口、Generics 和很多东西,但我离题了。)我希望有人能告诉我他们何时以及如何使用委托在web编程 asp.net c#(2.0 及以上)。
谢谢,如果 Stack Overflow 有问题,请告诉我。
bdukes 对事件的看法是正确的。 但您不仅限于将委托与事件一起使用。
研究经典的观察者模式以获取更多关于使用委托的示例。 模式上的一些文本指向事件 model,但从原始学习的角度来看,您不必使用事件。
要记住的一件事:委托只是另一种可以使用和传递的类型,类似于您的原始类型,例如“int”。 就像“int”一样,委托具有自己的特殊特征,当您使用委托类型时,您可以在编码中对其进行操作。
要真正了解该主题以及其中一些更高级和详细的方面,请获取 Joe Duffy 的书.NET Framework 2.0 。
好吧,每当您处理事件时,您都在使用委托。
首先回答你的第二个问题,我认为这对 StackOverflow 来说是一个很好的问题!
第一个例子是排序。 List 上的 Sort() 方法需要一个委托来进行排序,Find() 方法也是如此。 我不太喜欢在数据库中进行排序,所以我喜欢在我的结果集上使用 Sort()。 毕竟,列表的顺序(通常)更多是 UI 问题,而不是业务规则问题。
编辑:我已将我在数据库之外排序的原因添加到此处的适当问题中。
编辑:排序例程中使用的比较 function 是一个委托。 因此,如果您使用 .Sort(Comparison(T)) 方法对 List 进行排序,则传递给排序 function 的 Comparison(T) 方法是一个委托。 请参阅 .Sort(Comparison(T))文档。
我想到的另一个快速示例是使用 Rhino Mocks 进行单元测试。 你可以用 Rhino Mocks 做的很多事情都利用了委托和 lambda 表达式。
每当您知道要执行某些操作时,都可以使用委托,但该操作的详细信息将取决于具体情况。
除其他外,我们将委托用于:
另一个例子是发布用户控件的事件。
例如。
// In your user control
public delegate void evtSomething(SomeData oYourData);
public event evtSomething OnSomething;
// In the page using your user control
ucYourUserControl.OnSomething += ucYourUserControl_OnSomething;
// Then implement the function
protected void ucYourUserControl_OnSelect(SomeData oYourData)
{
...
}
最近我使用代表来“委托”检查权限。
公共功能检查权限;
This way, the CheckPermission function can be shared by various controls or classes, say it in a static class or a utilities class, and still be managed centralized, avoiding also Interface explossion; 只是一个想法
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.