INotifyPropertyChanged 介面 CallerMemberName屬性

  • 2019 年 10 月 4 日
  • 筆記

調用方資訊

使用調用方資訊屬性,可以獲取關於調用方的資訊傳遞給方法。 可以獲取源程式碼、行號在源程式碼和調用方的成員名稱的文件路徑。 此資訊用於跟蹤,調試和創建診斷工具非常有用。若要獲取此資訊,則使用適用於可選參數,每個都有一個默認的屬性。 下表列出了 System.Runtime.CompilerServices 命名空間中定義的調用方資訊屬性:

特性

說明

類型

CallerFilePathAttribute

包含調用方源文件的完整路徑。 這是文件路徑在編譯時。

String

CallerLineNumberAttribute

在調用方法的源文件中的行號。

Integer

CallerMemberNameAttribute

方法或調用方的屬性名稱。 請參見 Member Names 本主題後面

String

示例

下面的示例演示如何使用調用方資訊屬性。 在每次調用 TraceMessage 方法,資訊將替換為可選參數的參數的調用方。

 1 // using System.Runtime.CompilerServices   2 // using System.Diagnostics;   3   4 public void DoProcessing()   5 {   6     TraceMessage("Something happened.");   7 }   8   9 public void TraceMessage(string message,  10         [CallerMemberName] string memberName = "",  11         [CallerFilePath] string sourceFilePath = "",  12         [CallerLineNumber] int sourceLineNumber = 0)  13 {  14     Trace.WriteLine("message: " + message);  15     Trace.WriteLine("member name: " + memberName);  16     Trace.WriteLine("source file path: " + sourceFilePath);  17     Trace.WriteLine("source line number: " + sourceLineNumber);  18 }  19  20 // Sample Output:  21 //  message: Something happened.  22 //  member name: DoProcessing  23 //  source file path: c:UsersusernameDocumentsVisual Studio 2012ProjectsCallerInfoCSCallerInfoCSForm1.cs  24 //  source line number: 31

備註

必須為每個可選參數指定一個顯式默認值。 不能將調用方資訊特性應用於未指定為選項的參數。

調用方資訊屬性不會使一個參數選項。 相反,它們影響傳遞的默認值,當參數省略時。

調用方資訊值發出為文本到在編譯時計算的 (IL)中間語言。 不同 StackTrace 屬性的結果異常的,結果不影響的經過模糊處理的。

成員名稱

可以使用 CallerMemberName 屬性設置為來避免指定成員名稱作為參數 String 到調用的方法。 通過使用這種方法,可以避免此問題 重命名重構 不更改 String 值。 此優勢為以下任務特別有用:

  • 使用跟蹤和診斷實例。
  • 實現 INotifyPropertyChanged 介面,在綁定數據時。 此介面允許對象的屬性通知一個綁定控制項屬性已更改,因此,該控制項可顯示最新資訊。 不 CallerMemberName 屬性,必須指定屬性名稱為文本。

以下圖表顯示返回的成員名稱,當您使用 CallerMemberName 屬性。

調用發生中

成員名稱結果

方法、屬性或事件

方法的名稱,該屬性,或者的事件調用為。

構造函數

字元串 「.ctor」

靜態構造函數

字元串 「.cctor」

析構函數

該字元串 「Finalize」

用戶定義的運算符或轉換

生成的名稱成員,例如, 「op_Addition」。

特性構造函數

特性所應用的成員的名稱。 如果屬性是在成員中的任何元素 (如參數、返回值或泛型類型參數),此結果是與組件關聯的成員的名稱。

不包含的成員 (例如,程式集級別或特性應用於型)

可選參數的默認值。

Tags: