gpt4 book ai didi

c# - C# nameof 运算符可以在没有实例的情况下引用实例属性吗?

转载 作者:IT王子 更新时间:2023-10-29 04:37:35 24 4
gpt4 key购买 nike

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

最佳答案

过去,文档明确解释了这一点,部分阅读:

In the examples you see that you can use a type name and access an instance method name. You do not need to have an instance of the type[emphasis mine]

这在the current documentation中被省略了.然而,这些例子仍然清楚地说明了这一点。代码示例,例如 Console.WriteLine(nameof(List<int>.Count)); // output: CountConsole.WriteLine(nameof(List<int>.Add)); // output: Add显示如何使用 nameof获得string带有类的实例成员名称的值。

即你应该可以写 nameof(ClientService.EndDate)并让它工作,这与您在问题中的观察相反,这将是“通常在句法上无效”

如果您在语法方面遇到问题,请提供一个好的 Minimal, Complete, and Verifiable code example可靠地重现您遇到的任何错误,并提供错误消息的准确文本。

关于c# - C# nameof 运算符可以在没有实例的情况下引用实例属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38257907/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com