Abrufen des aktuellen Methodennamens in C#
-
Erhalten Sie den aktuellen Methodennamen mit
MethodBase.GetCurrentMethod()
inC#
-
Erhalten Sie den aktuellen Methodennamen mit
Reflection
inC#
-
Erhalten Sie den aktuellen Methodennamen mit der Klasse
StackTrace
inC#
-
Erhalten Sie den aktuellen Methodennamen mit dem Operator
nameof
inC#
In diesem Artikel erfahren Sie, wie Sie C# verwenden, um den Namen der aktuell ausgeführten Methode abzurufen. In C# gibt es mehrere Möglichkeiten, den Namen der gerade ausgeführten Methode abzurufen.
Die folgenden Prozeduren, die ähnlich funktionieren, werden unten skizziert, diskutiert und ausgeführt.
Erhalten Sie den aktuellen Methodennamen mit MethodBase.GetCurrentMethod()
in C#
Es ist notwendig, ein MethodBase
-Objekt zu verwenden, um die aktuelle Methode darzustellen.
Es ist möglich, GetCurrentMethod()
innerhalb einer laufenden Methode zu verwenden und Informationen über die aktuelle Methode zu erhalten. Sie können die Funktion MethodBase.GetCurrentMethod()
verwenden, um ein MethodBase
-Objekt zu erhalten, das die aktuell ausgeführte Methode widerspiegelt.
Importieren Sie zunächst die Bibliotheken, um Zugriff auf die Funktionen zu haben, die später im Code verwendet werden.
using System;
using System.Diagnostics;
using System.Reflection;
Initialisieren Sie dann innerhalb der Methode Main
eine Variable vom Typ String, die die Funktion GetCurrentMethod()
verwendet, um den Namen der aktuellen Methode zu überprüfen. Und dann wird der Funktionsname in der Konsole ausgegeben.
string getName = MethodBase.GetCurrentMethod().Name;
Console.WriteLine("Current method is " + getName);
Quellcode:
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);
}
}
Ausgang:
Current method is Main
MethodInfo
gegeben durch GetCurrentMethod
wird von der generischen Typdefinition abgeleitet, wenn die aktuell laufende Methode auf einem generischen Typ definiert ist (MethodBase.ContainsGenericParameters
gibt true
zurück). Daher stellt es nicht den Parametertyp dar, der an die Methode übergeben wurde, als sie aufgerufen wurde.
GetCurrentMethod
gibt die generische Methodenbeschreibung zurück, wenn die gerade laufende Methode generisch ist. MethodInfo
wird von der Spezifikation des generischen Typs empfangen, wenn die generische Methode auf einem generischen Typ angegeben ist.
Erhalten Sie den aktuellen Methodennamen mit Reflection
in C#
Reflexion
könnte eine einfache Methode sein, um loszulegen. Der Namensraum Reflektion
stellt die Klasse MethodBase
bereit, die GetCurrentMethod
verfügbar macht, um die Methodeninformationen zu erhalten.
System.Reflection.MethodBase.GetCurrentMethod().Name;
Hier ist der gesamte Quellcode der Reflection
-Methode.
Quellcode:
using System;
class CurrentMethodName {
private static void Main(string[] args) {
var getName = System.Reflection.MethodBase.GetCurrentMethod().Name;
Console.WriteLine("Current method is " + getName);
}
}
Ausgang:
Current method is Main
Erhalten Sie den aktuellen Methodennamen mit der Klasse StackTrace
in C#
Eine andere Möglichkeit, den Namen der Methode zu erhalten, ist die Verwendung der Methode StackTrace
und des Stapelrahmens, um die Methodeninformationen abzurufen. Es ist möglich, den Namen der Methode über die Eigenschaft GetMethod()
des Frames zu erhalten, der von der Funktion StackTrace
GetFrame()
zurückgegeben wird.
Importieren Sie zunächst die Bibliotheken, um auf die Klasse StackTrace
im Code zuzugreifen.
using System;
using System.Diagnostics;
Legen Sie ein StackTrace
-Objekt in einer Variablen namens stackTrace
fest und verwenden Sie dieses Objekt dann in der Main()
-Funktion. Erstellen Sie eine Variable getFrame
, die den Frame von der GetFrame
-Funktion über StackTrace
erhält.
Erstellen Sie eine Variable namens getName
und weisen Sie ihr die Verantwortung zu, den Namen der aktiven Methode abzurufen, indem Sie das Name
-Attribut der GetMethod
-Klasse verwenden.
var stackTrace = new StackTrace();
var getFrame = stackTrace.GetFrame(0);
var getName = getFrame.GetMethod().Name;
Quellcode:
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);
}
}
Ausgang:
Current method is Main
Erhalten Sie den aktuellen Methodennamen mit dem Operator nameof
in C#
Wenn das Schlüsselwort nameof
in einem Ausdruck verwendet wird, wird die Zeichenfolgenkonstante auf den Namen einer Variablen, eines Typs oder eines Members gesetzt. Der Ausdruck nameof
hat zur Laufzeit keine Auswirkung, da er nur zur Erstellungszeit ausgewertet wird.
Sie können den Code zum Prüfen von Argumenten pflegeleichter machen, indem Sie einen Ausdruck namens nameof
verwenden.
Dieser Ansatz basiert auf dem integrierten Schlüsselwort, das Folgendes nicht verwendet.
using
-Anweisung, dieReflektion
-Namespaces anfügt, ist es unnötig,using System.Diagnostics;
anzuhängen; undmit System.Reflection;
- Zusätzliche Klassen, die bestehenden Code widerspiegeln.
Quellcode:
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();
}
}
Ausgang:
Current method is Unique
nameof
ist in C# Version 6 und höher verfügbar.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