호출자 정보(C# 및 Visual Basic)

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

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

특성

설명

형식

CallerFilePathAttribute

호출자가 포함 된 소스 파일의 전체 경로입니다.컴파일 타임에 파일 경로입니다.

String

CallerLineNumberAttribute

줄 번호는 메서드가 호출 된 원본 파일입니다.

Integer

CallerMemberNameAttribute

메서드 또는 속성의 호출자가 이름입니다.참조 하십시오 Member Names 이 항목의 뒷부분에 나오는.

String

예제

다음 예제에서는 호출자가 정보 특성을 사용 하는 방법을 보여 줍니다.각 호출에는 TraceMessage 메서드를 호출자에 게 정보에 선택적 매개 변수 인수로 대체 됩니다.

' Imports System.Runtime.CompilerServices
' Imports System.Diagnostics

Private Sub DoProcessing()
    TraceMessage("Something happened.")
End Sub

Public Sub TraceMessage(message As String,
        <CallerMemberName> Optional memberName As String = Nothing,
        <CallerFilePath> Optional sourcefilePath As String = Nothing,
        <CallerLineNumber()> Optional sourceLineNumber As Integer = 0)

    Trace.WriteLine("message: " & message)
    Trace.WriteLine("member name: " & memberName)
    Trace.WriteLine("source file path: " & sourcefilePath)
    Trace.WriteLine("source line number: " & sourceLineNumber)
End Sub

' Sample output:
'   message: Something happened.
'   member name: DoProcessing
'   source file path: C:\Users\username\Documents\Visual Studio 2012\Projects\CallerInfoVB\CallerInfoVB\Form1.vb
'   source line number: 15
// using System.Runtime.CompilerServices
// using System.Diagnostics;

public void DoProcessing()
{
    TraceMessage("Something happened.");
}

public void TraceMessage(string message,
        [CallerMemberName] string memberName = "",
        [CallerFilePath] string sourceFilePath = "",
        [CallerLineNumber] int sourceLineNumber = 0)
{
    Trace.WriteLine("message: " + message);
    Trace.WriteLine("member name: " + memberName);
    Trace.WriteLine("source file path: " + sourceFilePath);
    Trace.WriteLine("source line number: " + sourceLineNumber);
}

// Sample Output:
//  message: Something happened.
//  member name: DoProcessing
//  source file path: c:\Users\username\Documents\Visual Studio 2012\Projects\CallerInfoCS\CallerInfoCS\Form1.cs
//  source line number: 31

설명

각 선택적 매개 변수에 대 한 명시적 기본 값을 지정 해야 합니다.선택적으로 지정 되지 않은 매개 변수를 호출자에 게 정보 특성을 적용할 수 없습니다.

호출자 정보 특성 매개 변수를 선택 하지 마십시오.대신, 이러한 인수를 생략 하면 전달 된 기본값은 영향을 줍니다.

호출자 정보 값 리터럴로 중간 언어 (IL로) 컴파일할 때 생성 됩니다.결과를 달리는 StackTrace 예외를 결과 대 한 속성은 난독 처리에 영향을 주지 않으므로.

Hh534540.collapse_all(ko-kr,VS.110).gif멤버 이름

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

  • 추적 및 진단 루틴을 사용 합니다.

  • 구현 하는 INotifyPropertyChanged 인터페이스 데이터에 바인딩하는 경우.이 인터페이스는 컨트롤에 업데이트 된 정보를 표시할 수 있도록 바운드 컨트롤의 속성 변경 알림 개체의 속성을 수 있습니다.없이 CallerMemberName 특성을 리터럴 문자로 속성 이름을 지정 해야 합니다.

다음 차트 멤버 이름을 사용 하는 경우 반환 되는 표시를 CallerMemberName 특성.

호출 발생 내의

멤버 이름 결과입니다.

메서드, 속성 또는 이벤트

메서드, 속성 또는 호출이 시작 되는 이벤트의 이름입니다.

생성자

문자열 ".ctor"

정적 생성자

문자열 ".cctor"

소멸자

문자열 "최종 확정"

사용자 정의 연산자 또는 변환

예를 들어, "op_Addition" 멤버를 기본 이름입니다.

특성 생성자

특성이 적용 되는 멤버의 이름입니다.특성 멤버 (예: 매개 변수, 반환 값 또는 제네릭 형식 매개 변수) 안의 요소 이면이 해당 요소와 연관 된 멤버의 이름입니다.

없음 (예를 들어, 어셈블리 수준 또는 형식에 적용 되는 특성) 포함 하는 멤버

선택적 매개 변수의 기본값입니다.

참고 항목

참조

특성(C# 및 Visual Basic)

개념

공통 특성(C# 및 Visual Basic)

선택적 매개 변수(Visual Basic)

명명된 인수와 선택적 인수(C# 프로그래밍 가이드)

기타 리소스

프로그래밍 개념