호출자 정보(C# 및 Visual Basic)
호출자 정보 특성을 사용 하면 메서드 호출자에 대 한 정보를 얻을 수 있습니다.소스 코드 파일 경로, 호출자의 멤버 이름과 소스 코드의 줄 번호를 얻을 수 있습니다.이 정보를 추적, 디버깅 및 진단 도구를 만드는 데 도움이 됩니다.
이 정보를 얻으려면 각각 기본값이 있는 선택적 매개 변수가 적용 되는 특성을 사용 합니다.다음 표에서 정의 된 호출자 정보 특성은 System.Runtime.CompilerServices 네임 스페이스:
특성 |
설명 |
형식 |
호출자가 포함 된 소스 파일의 전체 경로입니다.컴파일 타임에 파일 경로입니다. |
String |
|
줄 번호는 메서드가 호출 된 원본 파일입니다. |
Integer |
|
메서드 또는 속성의 호출자가 이름입니다.참조 하십시오 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 예외를 결과 대 한 속성은 난독 처리에 영향을 주지 않으므로.
멤버 이름
사용할 수 있는 CallerMemberName 특성 멤버 이름으로 지정 하지 않으려면는 String 호출된 된 메서드의 인수.이 기법을 사용 하 여 문제 방지는 이름 바꾸기 리팩터링을 변경 되지 않습니다을 String 값입니다.이 혜택은 다음과 같은 작업에 특히 유용합니다.
추적 및 진단 루틴을 사용 합니다.
구현 하는 INotifyPropertyChanged 인터페이스 데이터에 바인딩하는 경우.이 인터페이스는 컨트롤에 업데이트 된 정보를 표시할 수 있도록 바운드 컨트롤의 속성 변경 알림 개체의 속성을 수 있습니다.없이 CallerMemberName 특성을 리터럴 문자로 속성 이름을 지정 해야 합니다.
다음 차트 멤버 이름을 사용 하는 경우 반환 되는 표시를 CallerMemberName 특성.
호출 발생 내의 |
멤버 이름 결과입니다. |
---|---|
메서드, 속성 또는 이벤트 |
메서드, 속성 또는 호출이 시작 되는 이벤트의 이름입니다. |
생성자 |
문자열 ".ctor" |
정적 생성자 |
문자열 ".cctor" |
소멸자 |
문자열 "최종 확정" |
사용자 정의 연산자 또는 변환 |
예를 들어, "op_Addition" 멤버를 기본 이름입니다. |
특성 생성자 |
특성이 적용 되는 멤버의 이름입니다.특성 멤버 (예: 매개 변수, 반환 값 또는 제네릭 형식 매개 변수) 안의 요소 이면이 해당 요소와 연관 된 멤버의 이름입니다. |
없음 (예를 들어, 어셈블리 수준 또는 형식에 적용 되는 특성) 포함 하는 멤버 |
선택적 매개 변수의 기본값입니다. |