Languages
[Edit]
PL

C# / .NET - pobieranie aktualnej nazwy metody / funkcji

3 points
Created by:
Sylwia
1337

W tym artykule przyjrzymy si─Ö, jak uzyska─ç aktualn─ů nazw─Ö metody┬áw C# / .NET.

Szybkie rozwi─ůzanie:

string methodName = nameof(this.SomeMethodHere);   //  C# 6 lub nowsze

// lub

MethodBase method = MethodBase.GetCurrentMethod(); //  wywołaj poniższy kod w docelowej funkcji
string methodName = method.Name;

Mo┼╝na to wykona─ç u┼╝ywaj─ůc:

  • wbudowanego┬áoperatora┬ánameof - wprowadzony dopiero┬áw C# 6,
  • mechanizmu refleksji (Reflection API).

 1. Operator nameof przykład:

U┼╝ywaj─ůc tego podej┼Ťcia nie jest wymagane za┼é─ůczenie dodatownych przestrzeni nazw - wystarczy operator.

Uwaga: operator nameof jest dost─Öpny w j─Özyku C# 6 i nowszych wersjach, wi─Öc nale┼╝y upewni─ç si─Ö czy nasz projekt zosta┼é skonfigurowany poprawnie i czy mamy zainswtalowan─ů┬áodpowiedni─ů wersj─Ö j─Özyka C#.

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();
	}
}

 Wynik:

Currently called method name is DoMethod.

2. Przykład metody MethodBase.GetCurrentMethod

To rozwi─ůzanie zosta┼éo wprowadzone we wcze┼Ťniejszej wersji .NET - mo┼╝na z niego korzysta─ç bez obaw, braku wsparcia.

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();
	}
}

Wynik:

Currently called method name is DoMethod.

3. Przykład klasy StackTrace

To jest dodatkowy, alternatywny sposób dla poprzednich przykładów.

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();
	}
}

Wynik:

Currently called method name is DoMethod.

Bibliografia

  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.