繁体   English   中英

C#nameof运算符引用实例属性可以没有实例吗?

[英]Can C# nameof operator reference instance property without instance?

当我没有实例时,我经常想要获取类型的实例属性的名称。 目前要执行此操作,我使用以下内部函数来解释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)实际上是按原样工作的。

文档

在示例中,您会看到可以使用类型名称并访问实例方法名称。 您不需要具有该类型的实例 ... [强调我的]

即你应该能够写出nameof(ClientService.EndDate)并让它工作,这与你在问题中的声明相反,即“通常语法无效”

如果您遇到语法问题,请提供一个良好的Minimal,Complete和Verifiable代码示例 ,可以可靠地重现您获得的任何错误,并提供错误消息的确切文本。

@Peter Duniho的精彩回答。

如果出现名称冲突,您还可以执行以下操作:

ClientService clientservice;
var str = nameof(clientservice.EndDate);

效率不高,但很好奇。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM