C#에서 현재 메서드 이름 가져오기

Saad Aslam 2023년10월12일
  1. C#에서 MethodBase.GetCurrentMethod()를 사용하여 현재 메서드 이름 얻기
  2. C#에서 Reflection을 사용하여 현재 메서드 이름 얻기
  3. C#에서 StackTrace 클래스로 현재 메소드 이름 얻기
  4. C#에서 nameof 연산자를 사용하여 현재 메서드 이름 얻기
C#에서 현재 메서드 이름 가져오기

이 기사에서는 C#을 활용하여 실행 중인 현재 메서드의 이름을 가져오는 방법을 배웁니다. C#에는 현재 실행 중인 메서드의 이름을 가져오는 방법이 두 가지 이상 있습니다.

유사하게 작동하는 다음 절차는 아래에서 설명, 논의 및 수행됩니다.

C#에서 MethodBase.GetCurrentMethod()를 사용하여 현재 메서드 이름 얻기

현재 메서드를 나타내려면 MethodBase 개체를 활용해야 합니다.

실행 중인 메서드 내부에서 GetCurrentMethod()를 사용하여 현재 메서드에 대한 정보를 얻을 수 있습니다. 현재 실행 중인 메서드를 반영하는 MethodBase 개체를 가져오기 위해 MethodBase.GetCurrentMethod() 함수를 사용할 수 있습니다.

먼저 코드에서 나중에 사용되는 기능에 액세스할 수 있도록 라이브러리를 가져옵니다.

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

그런 다음 Main 메서드 내에서 GetCurrentMethod() 함수를 사용하여 현재 메서드의 이름을 확인할 문자열 유형 변수를 초기화합니다. 그런 다음 콘솔에 함수 이름을 출력합니다.

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

소스 코드:

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

출력:

Current method is Main

현재 실행 중인 메서드가 제네릭 유형에 정의된 경우(MethodBase.ContainsGenericParameterstrue를 반환함) GetCurrentMethod에 의해 제공된 MethodInfo는 제네릭 유형 정의에서 파생됩니다. 따라서 호출될 때 메서드에 전달된 매개 변수 유형을 나타내지 않습니다.

‘GetCurrentMethod’는 현재 실행 중인 메서드가 일반인 경우 일반 메서드 설명을 반환합니다. 제네릭 메서드가 제네릭 형식에 지정된 경우 제네릭 형식의 사양에서 MethodInfo를 받습니다.

C#에서 Reflection을 사용하여 현재 메서드 이름 얻기

‘Reflection’은 시작하는 간단한 방법일 수 있습니다. reflection 네임스페이스는 메소드 정보를 가져오기 위해 GetCurrentMethod를 노출하는 MethodBase 클래스를 제공합니다.

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

다음은 Reflection 메서드의 전체 소스 코드입니다.

소스 코드:

using System;

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

출력:

Current method is Main
Note
이것은 비 동기화 방법에 대해 작동합니다.

C#에서 StackTrace 클래스로 현재 메소드 이름 얻기

메서드 이름을 가져오는 또 다른 옵션은 StackTrace 메서드와 스택 프레임을 사용하여 메서드 정보를 가져오는 것입니다. 메서드의 이름은 StackTrace GetFrame() 함수가 반환한 프레임의 GetMethod() 속성을 통해 얻을 수 있습니다.

먼저 코드 내부의 StackTrace 클래스에 액세스하기 위해 라이브러리를 가져옵니다.

using System;
using System.Diagnostics;

stackTrace라는 변수에 StackTrace 개체를 설정한 다음 Main() 함수에서 해당 개체를 사용합니다. StackTrace를 통해 GetFrame 기능으로 프레임을 가져올 getFrame 변수를 만듭니다.

getName이라는 변수를 만들고 GetMethod 클래스의 Name 특성을 사용하여 활성 메서드의 이름을 검색하는 책임을 변수에 할당합니다.

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

소스 코드:

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

출력:

Current method is Main

C#에서 nameof 연산자를 사용하여 현재 메서드 이름 얻기

표현식에서 nameof 키워드를 사용하면 문자열 상수가 변수, 유형 또는 멤버의 이름으로 설정됩니다. nameof 표현식은 빌드 시에만 평가되기 때문에 런타임에 영향을 미치지 않습니다.

nameof라는 식을 사용하여 인수 확인 코드를 유지 관리하기 쉽게 만들 수 있습니다.

이 접근 방식은 다음을 사용하지 않는 기본 제공 키워드를 기반으로 합니다.

  1. reflection 네임스페이스를 첨부하는 using 문, using System.Diagnostics;를 첨부할 필요가 없습니다. 및 사용 System.Reflection;
  2. 기존 코드를 반영하는 추가 클래스.

소스 코드:

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

출력:

Current method is Unique
Note
nameof 연산자는 C# 버전 6 이상에서 사용할 수 있습니다.
작가: 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

관련 문장 - Csharp Function