2014-09-10 4 views
1

Как получить имя делегата внутри делегированного метода?Как получить имя делегата внутри делегированного метода?

Вот моя программа для тестирования:

namespace Test 
{ 
    class Program 
    { 
     public Action action; 

     void real() 
     { 
      // I hoped it would output "action" here, but it was "real" 
      Console.WriteLine(MethodInfo.GetCurrentMethod().Name); 
     } 

     public Program() 
     { 
      action = real; 
     } 

     static void Main(string[] args) 
     { 
      Program pr = new Program(); 
      pr.action(); 
     } 
    } 
} 

Так как я могу получить имя делегата action вместо метода read?

Я пробовал MethodInfo.GetCurrentMethod(), но это не сработало.

+0

'action' является делегатом не методом,' real' является методом делегата. – Hassan

+0

Из 'void DoAction (Action actionParam)', должен ли он давать 'action' или' actionParam'? –

+0

[Related] (http://stackoverflow.com/q/23990297/) –

ответ

1

Рассмотрим

static void Main(string[] args) 
{ 
    Program pr = new Program(); 
    Action tempName1 = pr.action; 
    Action tempName2 = tempName1; 

    //pr.action(); 
    tempName2(); 
} 

Какое имя вы хотели бы получить? tempName1, tempName2, pr.action или просто действие?

Из этих вариантов следует, что вы не можете получить однозначное имя переменной.

+0

Спасибо! Могу ли я получить tempName2 в этом случае? – whenov

+0

Смежные вопросы