DE
C# .NET - aktuellen Methodennamen abrufen
3 points
In diesem Artikel wird gezeigt, wie man den aktuellen Methodennamen in C# .NET abrufen kann.
Schnelle Lösung:
xxxxxxxxxx
1
string methodName = nameof(this.SomeMethodHere); // C# 6 oder neuer
2
3
// oder
4
5
MethodBase method = MethodBase.GetCurrentMethod(); // man kann es in Ihrer Methode nennen
6
string methodName = method.Name;
Es gibt zwei Ansätze, wie es geht:
- mit integriertem Operatorsnamen - eingeführt in C# 6,
- mit Reflexion API
1. nameof
Beispiel für ein Operator
Dieser Ansatz basiert auf einem integrierten Schlüsselwort, das Folgendes nicht verwendet:
- bei der Verwendung einer Anweisung, die Reflexion-Namenspaces anfügt, muss man Folgendes nicht anhängen:
undusing System.Diagnostics;
using System.Reflection;
- zusätzliche Klassen, die vorhandenen Code widerspiegeln.
Hinweis: Der Operator
nameof
ist in C# 6 und neueren Versionen verfügbar.
xxxxxxxxxx
1
using System;
2
3
public static class Program
4
{
5
private static void DoMethod()
6
{
7
string name = nameof(DoMethod);
8
9
Console.WriteLine("Currently called method name is " + name);
10
}
11
12
public static void Main(string[] args)
13
{
14
DoMethod();
15
}
16
}
Ausgabe:
xxxxxxxxxx
1
Currently called method name is DoMethod.
2.
Beispiel für eine MethodeMethodBase.GetCurrentMethod
Diese Lösung wurde in einer früheren Version von .NET eingeführt - sie kann ohne Sorgen, dass sie nicht unterstützt ist, verwendet werden.
xxxxxxxxxx
1
using System;
2
using System.Diagnostics;
3
using System.Reflection;
4
5
public static class Program
6
{
7
private static void DoMethod()
8
{
9
MethodBase method = MethodBase.GetCurrentMethod();
10
11
Console.WriteLine("Currently called method name is " + method.Name);
12
}
13
14
public static void Main(string[] args)
15
{
16
DoMethod();
17
}
18
}
Ausgabe:
xxxxxxxxxx
1
Currently called method name is DoMethod.
3. StackTrace
Beispiel für eine Klasse
Das ist auch eine zusätzliche Alternative für frühere Beispiele.
xxxxxxxxxx
1
using System;
2
using System.Diagnostics;
3
using System.Reflection;
4
5
public static class Program
6
{
7
private static void DoMethod()
8
{
9
StackTrace trace = new StackTrace();
10
11
StackFrame frame = trace.GetFrame(0);
12
MethodBase method = frame.GetMethod();
13
14
Console.WriteLine("Currently called method name is " + method.Name + ".");
15
}
16
17
public static void Main(string[] args)
18
{
19
DoMethod();
20
}
21
}
Ausgabe:
xxxxxxxxxx
1
Currently called method name is DoMethod.
Literaturverzeichnis: