• Откуда у делегатов метод Invoke?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Во время компиляции создается класс, наследующийся от MulticastDelegate. Там и определяются.

    StackOverflow

    Делегат:
    namespace ConsoleApp;
    
    public delegate int Factory();


    IL код
    // Type: ConsoleApp.Factory 
    // Assembly: ConsoleApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
    // MVID: 158825C2-2E1C-449E-A72A-66768D48C2ED
    // Location: /home/user/RiderProjects/ConsoleApp/ConsoleApp/bin/Debug/net6.0/ConsoleApp.dll
    // Sequence point data and variable names from /home/user/RiderProjects/ConsoleApp/ConsoleApp/bin/Debug/net6.0/ConsoleApp.pdb
    
    .class public sealed auto ansi
      ConsoleApp.Factory
        extends [System.Runtime]System.MulticastDelegate
    {
    
      .method public hidebysig specialname rtspecialname instance void
        .ctor(
          object 'object',
          native int 'method'
        ) runtime managed
      {
        // Can't find a body
      } // end of method Factory::.ctor
    
      .method public hidebysig virtual newslot instance int32
        Invoke() runtime managed
      {
        // Can't find a body
      } // end of method Factory::Invoke
    
      .method public hidebysig virtual newslot instance class [System.Runtime]System.IAsyncResult
        BeginInvoke(
          class [System.Runtime]System.AsyncCallback callback,
          object 'object'
        ) runtime managed
      {
        // Can't find a body
      } // end of method Factory::BeginInvoke
    
      .method public hidebysig virtual newslot instance int32
        EndInvoke(
          class [System.Runtime]System.IAsyncResult result
        ) runtime managed
      {
        // Can't find a body
      } // end of method Factory::EndInvoke
    } // end of class ConsoleApp.Factory
    Ответ написан
    Комментировать