Obtener el nombre del método actual en C#

Saad Aslam 12 octubre 2023
  1. Obtenga el nombre del método actual con MethodBase.GetCurrentMethod() en C#
  2. Obtenga el nombre del método actual con Reflection en C#
  3. Obtenga el nombre del método actual con la clase StackTrace en C#
  4. Obtenga el nombre del método actual con el operador nameof en C#
Obtener el nombre del método actual en C#

En este artículo, aprenderemos cómo utilizar C# para obtener el nombre del método actual que se está ejecutando. En C#, hay más de una forma de obtener el nombre del método, que se está ejecutando actualmente.

Los siguientes procedimientos, que funcionan de manera similar, se describen, analizan y llevan a cabo a continuación.

Obtenga el nombre del método actual con MethodBase.GetCurrentMethod() en C#

Es necesario utilizar un objeto MethodBase para representar el método actual.

Es posible utilizar GetCurrentMethod() desde dentro de un método en ejecución y obtener información sobre el método actual. Puede usar la función MethodBase.GetCurrentMethod() para obtener un objeto MethodBase que refleje el método que se está ejecutando actualmente.

En primer lugar, importa las bibliotecas para tener acceso a las funciones que luego se utilizan en el código.

using System;
using System.Diagnostics;
using System.Reflection;

Luego, dentro del método Principal, inicializa una variable de tipo cadena que usará la función GetCurrentMethod() para verificar el nombre del método actual. Y luego, generará el nombre de la función en la consola.

string getName = MethodBase.GetCurrentMethod().Name;
Console.WriteLine("Current method is " + getName);

Código fuente:

using System;
using System.Diagnostics;
using System.Reflection;

class CurrentMethodName {
  public static void Main() {
    string getName = MethodBase.GetCurrentMethod().Name;
    Console.WriteLine("Current method is " + getName);
  }
}

Producción :

Current method is Main

MethodInfo proporcionado por GetCurrentMethod se deriva de la definición de tipo genérico si el método que se está ejecutando actualmente está definido en un tipo genérico (MethodBase.ContainsGenericParameters devuelve true). Por lo tanto, no representa el tipo de parámetros pasados al método cuando se llamó.

GetCurrentMethod devuelve la descripción del método genérico si el método que se está ejecutando ahora es genérico. MethodInfo se recibe de la especificación del tipo genérico si el método genérico se especifica en un tipo genérico.

Obtenga el nombre del método actual con Reflection en C#

Reflection podría ser un método simple para comenzar. El espacio de nombres reflection proporciona la clase MethodBase, exponiendo GetCurrentMethod para obtener la información del método.

System.Reflection.MethodBase.GetCurrentMethod().Name;

Aquí está el código fuente completo del método Reflection.

Código fuente:

using System;

class CurrentMethodName {
  private static void Main(string[] args) {
    var getName = System.Reflection.MethodBase.GetCurrentMethod().Name;
    Console.WriteLine("Current method is " + getName);
  }
}

Producción :

Current method is Main
Note
Esto funcionaría para métodos no sincronizados.

Obtenga el nombre del método actual con la clase StackTrace en C#

Otra opción para obtener el nombre del método es usar el método StackTrace y el marco de pila para obtener la información del método. Es posible obtener el nombre del método a través de la propiedad GetMethod() del marco devuelto por la función StackTrace GetFrame().

En primer lugar, importe las bibliotecas para acceder a la clase StackTrace dentro del código.

using System;
using System.Diagnostics;

Establezca un objeto StackTrace en una variable llamada stackTrace, y luego use ese objeto en la función Main(). Cree una variable getFrame que obtendrá el marco mediante la función GetFrame a través de StackTrace.

Haz una variable llamada getName, y asígnale la responsabilidad de recuperar el nombre del método activo usando el atributo Name de la clase GetMethod.

var stackTrace = new StackTrace();
var getFrame = stackTrace.GetFrame(0);
var getName = getFrame.GetMethod().Name;

Código fuente:

using System;
using System.Diagnostics;

class CurrentMethodName {
  private static void Main(string[] args) {
    var stackTrace = new StackTrace();
    var getFrame = stackTrace.GetFrame(0);
    var getName = getFrame.GetMethod().Name;
    Console.WriteLine("Current method is " + getName);
  }
}

Producción :

Current method is Main

Obtenga el nombre del método actual con el operador nameof en C#

Cuando se usa la palabra clave nameof en una expresión, la constante de cadena se establece en el nombre de una variable, tipo o miembro. La expresión nameof no tendrá ningún efecto en el tiempo de ejecución, ya que solo se evalúa en el momento de la compilación.

Puede hacer que el código para verificar argumentos sea más fácil de mantener usando una expresión llamada nameof.

Este enfoque se basa en la palabra clave integrada que no utiliza lo siguiente.

  1. declaración using que adjunta espacios de nombres reflection, no es necesario adjuntar using System.Diagnostics; y usando System.Reflection;
  2. Clases adicionales que reflejan el código existente.

Código fuente:

using System;

class CurrentMethodName {
  private static void Unique() {
    string name = nameof(Unique);

    Console.WriteLine("Current method is " + name);
  }

  public static void Main(string[] args) {
    Unique();
  }
}

Producción :

Current method is Unique
Note
El operador nameof está disponible en C# versión 6 y posteriores.
Autor: Saad Aslam
Saad Aslam avatar Saad Aslam avatar

I'm a Flutter application developer with 1 year of professional experience in the field. I've created applications for both, android and iOS using AWS and Firebase, as the backend. I've written articles relating to the theoretical and problem-solving aspects of C, C++, and C#. I'm currently enrolled in an undergraduate program for Information Technology.

LinkedIn

Artículo relacionado - Csharp Function