Если я создаю делегата в моем коде, как:
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, фактически вызывает делегата?