委托人的构造函数和成员函数在何处定义?

当我在Reflector中查看Action委托时,我看到它有一个类似的构造函数

 public Action(object @object, IntPtr method); 

但我找不到任何相同的主体以及其他成员函数,如InvokeBeginInvoke等。我只能看到它的定义。 这些function在哪里定义? 它们是否在.net BCL之外定义?

代表们基本上由CLR特别处理。 编译器提供签名,但CLR知道如何处理它们。

ECMA-335分区的第8.9.3节我谈到了这个:

委托是面向对象的函数指针等价物。 与函数指针不同,委托是面向对象的,类型安全的和安全的。 通过定义从基类型System.Delegate派生的类来创建委托(请参阅分区IV)。 每个委托类型都应提供一个名为Invoke的方法,该方法具有适当的参数,并且委托的每个实例都将对其Invoke方法的调用转发给特定对象上的一个或多个兼容的静态或实例方法。 创建委托实例时,将选择其委派的对象和方法。

除了实例构造函数和Invoke方法之外,委托还可以选择使用另外两种方法:BeginInvoke和EndInvoke。 这些用于异步调用。

虽然在大多数情况下,代表似乎只是另一种用户定义的类,但它们受到严格控制。 这些方法的实现由VES提供,而不是用户代码。 可以在委托类型上定义的唯一其他成员是静态或实例方法。

(VES是虚拟执行系统; CLR是Microsoft对VES的实现。)