다음을 통해 공유


호출자 정보

호출자 정보 특성을 사용하여 메서드에 대한 호출자에 대한 정보를 가져올 수 있습니다. 소스 코드의 파일 경로, 소스 코드의 줄 번호 및 호출자의 멤버 이름을 가져올 수 있습니다. 이 정보는 진단 도구를 추적, 디버깅 및 만드는 데 유용합니다.

이 정보를 얻으려면 각각 기본값이 있는 선택적 매개 변수에 적용되는 특성을 사용합니다. 다음 표에서는 System.Runtime.CompilerServices 네임스페이스에 정의된 호출자 정보 특성을 나열합니다.

특성 설명 유형
CallerFilePath 호출자가 포함된 원본 파일의 전체 경로입니다. 컴파일 시 파일 경로입니다. String
CallerLineNumber 메서드가 호출되는 소스 파일의 줄 번호입니다. Integer
CallerMemberName 호출자의 메서드 또는 속성 이름입니다. 이 항목의 뒷부분에 있는 멤버 이름 섹션을 참조하세요. String

예시

다음 예제에서는 이러한 특성을 사용하여 호출자를 추적하는 방법을 보여줍니다.

open System.Diagnostics
open System.Runtime.CompilerServices
open System.Runtime.InteropServices

type Tracer() =
    member _.DoTrace(message: string,
                      [<CallerMemberName; Optional; DefaultParameterValue("")>] memberName: string,
                      [<CallerFilePath; Optional; DefaultParameterValue("")>] path: string,
                      [<CallerLineNumber; Optional; DefaultParameterValue(0)>] line: int) =
        Trace.WriteLine(sprintf $"Message: {message}")
        Trace.WriteLine(sprintf $"Member name: {memberName}")
        Trace.WriteLine(sprintf $"Source file path: {path}")
        Trace.WriteLine(sprintf $"Source line number: {line}")

비고

호출자 정보 특성은 선택적 매개 변수에만 적용할 수 있습니다. 호출자 정보 특성으로 인해 컴파일러는 호출자 정보 특성으로 데코레이팅된 각 선택적 매개 변수에 대한 적절한 값을 작성합니다.

호출자 정보 값은 컴파일 시간에 IL(Intermediate Language)에 리터럴로 내보내집니다. 예외에 대한 StackTrace 속성의 결과와 달리 결과는 난독 처리의 영향을 받지 않습니다.

선택적 인수를 명시적으로 제공하여 호출자 정보를 제어하거나 호출자 정보를 숨길 수 있습니다.

멤버 이름

이 특성을 사용하여 CallerMemberName 멤버 이름을 호출된 메서드의 인수로 String 지정하지 않도록 할 수 있습니다. 이 기술을 사용하면 리팩터링 이름 바꾸기가 값을 변경하지 않는 문제를 방지할 수 String 있습니다. 이 혜택은 다음 작업에 특히 유용합니다.

  • 추적 및 진단 루틴 사용.
  • 데이터를 바인딩할 때 INotifyPropertyChanged 인터페이스 구현 이 인터페이스를 사용하면 개체의 속성이 변경되었음을 바인딩된 컨트롤에 알릴 수 있으므로 컨트롤이 업데이트된 정보를 표시할 수 있습니다. 특성이 CallerMemberName 없으면 속성 이름을 리터럴로 지정해야 합니다.

다음 차트는 CallerMemberName 특성을 사용할 때 반환되는 멤버 이름을 보여줍니다.

호출은 특정 범위 내에서 발생합니다. 멤버 이름 결과
메서드, 속성 또는 이벤트 호출이 시작된 메서드, 속성 또는 이벤트의 이름입니다.
생성자 문자열 ".ctor"
정적 생성자 문자열 ".cctor"
소멸자 "Finalize" 문자열
사용자 정의 연산자 또는 변환 멤버의 생성된 이름(예: "op_Addition")입니다.
특성 생성자 특성이 적용되는 멤버의 이름입니다. 특성이 멤버 내의 요소(예: 매개 변수, 반환 값 또는 제네릭 형식 매개 변수)인 경우 이 결과는 해당 요소와 연결된 멤버의 이름입니다.
포함 멤버 없음(예: 형식에 적용되는 어셈블리 수준 또는 특성) 선택적 매개 변수의 기본값입니다.

참고하십시오