nameof在C#中包含运算符的想法很多。作为此运算符如何工作的示例,nameof(Customer.Name)将返回字符串"Name"。
nameof
nameof(Customer.Name)
"Name"
我有一个域对象。而且我必须绑定它。然后,我需要属性名称作为字符串。我希望它们是类型安全的。
我记得在.NET 3.5中遇到了一种变通方法,该变通方法提供了nameoflambda表达式并涉及其中。但是,我无法找到此解决方法。谁能为我提供该解决方法?
如果可能,我也对实现nameof.NET 2.0 功能的方法感兴趣。
这段代码基本上是这样做的:
class Program { static void Main() { var propName = Nameof<SampleClass>.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; } }
(当然是3.5码…)