【发布时间】:2016-11-10 12:08:54
【问题描述】:
当我没有实例时,我经常想获取某个类型的实例属性的名称。目前为此,我使用以下内部函数来解释 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)编译得很好。 -
你能发布你的内部功能吗? <_>