当我没有实例时,我经常想获取类型的实例属性名称。目前,为了做到这一点,我使用以下内部函数来解释Expression [Func[T, object]]
参数并返回属性名称:
var str = LinqExtensions.NameOf<ClientService>(x => x.EndDate);
// Now str == "EndDate"
不过,不使用内置的 nameof
操作符似乎有些可惜。
不幸的是,似乎 nameof
操作符要求一个实例或引用静态属性。
是否有一种巧妙的方法来使用 nameof
操作符代替我们的内部函数?例如:
nameof(ClientService.EndDate) // ClientService.EndDate not normally syntactically valid as EndDate is instance member
编辑
我的想法完全错误,像所描述的那样,nameof(ClientService.EndDate)
语法实际上可以原封不动地使用。
class C { public int P { get; } }
-nameof(C.P)
编译得很好。 - Eli Arbel