Come determinare il nome del metodo in esecuzione?

Scritto da  Antonio Pierascenzi il mercoledì 12 maggio 2010  •  Linguaggio: C#,VB   • Livello: 100


Nei casi in cui sia necessario determinare il nome del metodo all'interno del quale si trova il codice in esecuzione è possibile utilizzare il metodo statico GetCurrentMethod() della classe MethodBase definita nel namespace System.Reflection.

C#

using System;
using System.Reflection;

namespace DomusDotNet
{
namespace Pillole
{
class Program
{
static void Main(string[] args)
{
MiaClasse miaClasse = new MiaClasse();
Console.WriteLine("MetodoStatico={0}", MiaClasse.MetodoStatico());
Console.WriteLine("MetodoIstanza={0}", miaClasse.MetodoIstanza());
Console.WriteLine("MetodoStaticoIterato={0}", MiaClasse.MetodoStaticoIterato());
Console.WriteLine("MetodoIstanzaIterato={0}", miaClasse.MetodoIstanzaIterato());
Console.WriteLine("Premi un tasto per uscire");
Console.Read();
}
}

public class MiaClasse
{
public static string MetodoStatico()
{
return MethodBase.GetCurrentMethod().Name;
}
public string MetodoIstanza()
{
return MethodBase.GetCurrentMethod().Name;
}
public static string MetodoStaticoIterato()
{
return string.Format("{0}+{1}", MetodoStatico(), MethodBase.GetCurrentMethod().Name);
}
public string MetodoIstanzaIterato()
{
return string.Format("{0}+{1}", MetodoIstanza(), MethodBase.GetCurrentMethod().Name);
}
}
}
}

VB.NET

Dim methodName As String = MethodBase.GetCurrentMethod().Name

Dato che il metodo GetCurrentMethod() restituisce un oggetto di classe MethodBase è possibile determinare non solo il nome ma anche le altre caratteristiche del metodo in esecuzione (gli attributi del metodo, la classe in cui è dichiarato, ecc.).


Tags: Reflection

 
x