C#3.0笔记(一)预备知识之Delegate
2009-04-06 08:24:13 来源:WEB开发网生成的Caculate类中定义了三个方法:BeginInvoke、EndInvoke、Invoke。其中Invoke是核心的方法,它用来以同步的方式调用委托列表中的每个方法。我们可以看一看编译器是如何定义这几个方法的。Invoke方法中的参数跟返回值完全跟Caculate委托的定义一样的,而BeginInvoke中多了两个参数一个是AsyncCallback类型的一个是object类型的,EndInvoke方法返回Int类型。
通过MulticastDeletate跟Delegate基类获取更多信息
我通过上面的IL代码也可以看到编译器生成委托时的类是继承于MulticastDelegate的,而MulticastDelegate继承于Delegate类,所以可以通过这两个类来获取委托更多的辅助信息。在这里只列出一些常用的属性和方法,可以在msdn上获取更多地这两个类的内容(MulticastDelegate成员)。
1.Methos属性:返回System.Reflection.MethodInfo类型,描述委托所表示的方法信息。
2.Target属性:返回委托方法所在的对象,如果是静态方法即返回null。
3.GetInvocationList方法:返回一个Delegate类型的数组,其中数组的每个元素表示一个可以调用的方法。
4.Combine方法: 静态方法用来给委托添加一个方法。
5.Remove方法:静态方法给委托移除某个方法。
看下简单的Caculate的实现,CaculateClient类:
public class CaculateClient
{
public int Add(int x, int y)
{
return x + y;
}
public int Subtract(int x, int y)
{
return x - y;
}
}
更多精彩
赞助商链接