Languages
[Edit]
DE

C# .NET - aktuellen Methodennamen abrufen

3 points
Created by:
Nikki
1659

In diesem Artikel wird gezeigt, wie man den aktuellen Methodennamen in C# .NET abrufen kann. 

Schnelle Lösung:

string methodName = nameof(this.SomeMethodHere);   //  C# 6 oder neuer

// oder

MethodBase method = MethodBase.GetCurrentMethod(); //  man kann es in Ihrer Methode nennen
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: using System.Diagnostics; und using System.Reflection;
  • zusĂ€tzliche Klassen, die vorhandenen Code widerspiegeln.

Hinweis: Der Operator nameof ist in C# 6 und neueren Versionen verfĂŒgbar.

using System;

public static class Program
{
	private static void DoMethod()
	{
		string name = nameof(DoMethod);

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

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

Ausgabe:

Currently called method name is DoMethod.

2. MethodBase.GetCurrentMethod Beispiel fĂŒr eine Methode

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.

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

public static class Program
{
	private static void DoMethod()
	{
		MethodBase method = MethodBase.GetCurrentMethod();

		Console.WriteLine("Currently called method name is " + method.Name);
	}

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

Ausgabe:

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. 

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

public static class Program
{
	private static void DoMethod()
	{
		StackTrace trace = new StackTrace();

		StackFrame frame = trace.GetFrame(0);
		MethodBase method = frame.GetMethod();

		Console.WriteLine("Currently called method name is " + method.Name + ".");
	}

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

Ausgabe:

Currently called method name is DoMethod.

Literaturverzeichnis:

  1. StackTrace Class - Microsoft docs
  2. StackFrame.GetMethod Method - Microsoft docs
  3. nameof operator - Microsoft Docs
Hey 👋
Would you like to know what we do?
  • Dirask is a friendly IT community for learners, professionals and hobbyists to share their knowledge and help each other in extraordinary easy way.
  • We welcome everyone,
    no matter what the experience,
    no matter how basic the question is,
    this community will help you.