INotifyPropertyChanged 接口 CallerMemberName属性
調用方信息
使用調用方信息屬性,可以獲取關于調用方的信息傳遞給方法。?可以獲取源代碼、行號在源代碼和調用方的成員名稱的文件路徑。?此信息用于跟蹤,調試和創建診斷工具非常有用。若要獲取此信息,則使用適用于可選參數,每個都有一個默認的屬性。?下表列出了?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:\Users\username\Documents\Visual Studio 2012\Projects\CallerInfoCS\CallerInfoCS\Form1.cs 24 // source line number: 31 ? 備注 ? 必須為每個可選參數指定一個顯式默認值。?不能將調用方信息特性應用于未指定為選項的參數。調用方信息屬性不會使一個參數選項。?相反,它們影響傳遞的默認值,當參數省略時。
調用方信息值發出為文本到在編譯時計算的 (IL)中間語言。?不同?StackTrace?屬性的結果異常的,結果不影響的經過模糊處理的。
?
成員名稱可以使用?CallerMemberName?屬性設置為來避免指定成員名稱作為參數?String?到調用的方法。?通過使用這種方法,可以避免此問題?重命名重構?不更改?String?值。?此優勢為以下任務特別有用:
-
使用跟蹤和診斷實例。
-
實現?INotifyPropertyChanged?接口,在綁定數據時。?此接口允許對象的屬性通知一個綁定控件屬性已更改,因此,該控件可顯示最新信息。?不?CallerMemberName?屬性,必須指定屬性名稱為文本。
以下圖表顯示返回的成員名稱,當您使用?CallerMemberName?屬性。
?| 方法、屬性或事件 | 方法的名稱,該屬性,或者的事件調用為。 |
| 構造函數 | 字符串 “.ctor” |
| 靜態構造函數 | 字符串 “.cctor” |
| 析構函數 | 該字符串 “Finalize” |
| 用戶定義的運算符或轉換 | 生成的名稱成員,例如, “op_Addition”。 |
| 特性構造函數 | 特性所應用的成員的名稱。?如果屬性是在成員中的任何元素 (如參數、返回值或泛型類型參數),此結果是與組件關聯的成員的名稱。 |
| 不包含的成員 (例如,程序集級別或特性應用于型) | 可選參數的默認值。 |
?
?
?
轉載于:https://www.cnblogs.com/SavionZhang/p/5701563.html
總結
以上是生活随笔為你收集整理的INotifyPropertyChanged 接口 CallerMemberName属性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 09_Mybatis开发Dao方法——m
- 下一篇: OSI模型和TCP/IP模型