C# 中缺少nameof 運算子的類型安全解決方法
nameof 運算符,傳回屬性名稱的字串表示形式,是最近添加到C# 中的。但是,早期版本的 C# 中缺少此運算子可能會成為類型安全資料綁定的障礙。
使用 Lambda 表達式的類型安全解決方案
一種解決方法針對這個問題的方法是使用lambda表達式來取得屬性名稱。這種方法確保類型安全,同時提供與 nameof 類似的功能。它的運作方式如下:
範例用法
以下程式碼示範如何使用此程式解決方法解決方法:
class Program { static void Main() { var propName = Nameof<Customer>.Property(e => e.Name); Console.WriteLine(propName); } } public class Nameof<T> { public static string Property<TProp>(Expression<Func<T, TProp>> expression) { var body = expression.Body as MemberExpression; if(body == null) throw new ArgumentException("'expression' should be a member expression"); return body.Member.Name; } }
在此範例中,propName 將使用表達式e => 呼叫 Property 後包含字串「Name」 e.Name.
注意: 此解決方法需要 .NET 3.5 或更高版本。對於.NET 2.0,需要採用不同的方法。但是,如果不使用 lambda 表達式或反射,就不可能完全複製 nameof 的功能,而 .NET 2.0 不支援這兩者。
以上是如何在較舊的 C# 版本中實現類型安全的屬性名稱檢索?的詳細內容。更多資訊請關注PHP中文網其他相關文章!