Если я создам делегат в своем коде, например:
delegate void dostuff (string o);
Это генерирует класс, полученный из System.MulticastDelegate
, который реализует три метода: Invoke
, BeginInvoke
и EndInvoke
.
Если я посмотрю на скомпилированный IL для Invoke
, я вижу следующее:
.method public hidebysig newslot virtual
instance void Invoke(string o) runtime managed
{
} // end of method dostuff::Invoke
Метод не содержит кода. Вызов его действительно работает - делегат вызывается, но я не вижу, как он это делает.
Где вуду, вызывающий вызов Invoke, фактически вызывает делегат?