利用C#反射取得屬性名稱字串
在使用反射時,經常需要將屬性名稱作為字串取得。當屬性名稱在重構過程中可能發生變化,或透過泛型介面遠端存取屬性時,這變得特別必要。
傳統方法是手動將屬性名稱作為ExposeProperty()
等方法的第三個參數指定。然而,這種方法容易出錯,並且如果屬性名稱發生更改,則需要不斷更新。
C# 6.0解:nameof表達式
C# 6.0提供了一個內建解決方案:nameof
表達式。此表達式可讓您在編譯時直接檢索屬性名稱作為字串。
<code class="language-csharp">string name = nameof(SomeClass.SomeProperty);</code>
即使稍後重新命名屬性,上述表達式也會傳回字串「SomeProperty」。
簡化反射碼
使用nameof
表達式,我們可以簡化ExposeProperty()
方法,並消除手動指定屬性名稱的需要:
<code class="language-csharp">public void ExposeProperty(string secretName, Type classType, string propertyName) { // 使用反射获取属性信息 PropertyInfo propertyInfo = classType.GetProperty(propertyName); // 使用反射公开属性 RemoteMgr.ExposeProperty(secretName, classType, propertyInfo); }</code>
此方法可確保用於遠端存取的屬性名稱始終是最新的,無論在重構期間進行了哪些變更。
透過利用nameof
表達式,開發人員可以透過動態檢索屬性名稱作為字串來提高程式碼的可維護性和健全性,消除潛在錯誤,並確保即使在程式碼修改後反射操作仍然準確。
以上是如何在 C# 反射中取得字串形式的屬性名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!