在 C# 中以字串形式存取屬性名稱
在 C# 程式設計中,特別是在使用反射時,經常需要以字串形式取得屬性名稱。事實證明,這對於動態方法呼叫或防止意外屬性重命名等任務非常有價值。
利用 nameof
運算子(C# 6.0 及更高版本)
自 C# 6.0 起,nameof
運算子提供了一個簡單而有效率的解決方案。 表達式 nameof(SomeProperty)
在編譯時直接產生字串“SomeProperty”。
通用屬性名稱擷取方法
對於 6.0 之前的 C# 版本,通用方法提供了解決方法:
<code class="language-csharp">public static string GetPropertyName<T>(Expression<Func<T>> propertyLambda) { var me = propertyLambda.Body as MemberExpression; if (me == null) { throw new ArgumentException("Invalid lambda expression"); } return me.Member.Name; }</code>
此方法接受引用屬性的 lambda 表達式並傳回其名稱。
實際應用
以下是如何使用GetPropertyName
方法:
<code class="language-csharp">// For a static property: string propertyName = GetPropertyName(() => SomeClass.SomeProperty); // For an instance property: string propertyName = GetPropertyName(() => someObject.SomeProperty);</code>
總結
無論是使用現代的 nameof
運算子還是 GetPropertyName
方法,都可以簡化以字串形式檢索屬性名稱,從而在處理反射和重構時增強程式碼的可維護性和穩健性。
以上是如何在 C# 中以字串形式檢索屬性名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!