问题标签 [nameof]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - VB.Net 等价于 C# nameof 用法
是否有与以下 C#nameof
用法等效的 VB.Net:
注意:MyClass 是一个泛型类,MyProperty
是private
.
我只能为具有Friend
属性的非泛型类编写以下代码,否则编译器会抱怨MyClass.MyProperty is not accessable in this context because it is 'Private'
:
c# - 获取作为参数传递的变量的原始名称?
需要明确的是,这不是这个问题的重复。显然,我可以使用nameof
运算符来获取变量或参数的名称;我知道。但是有没有一种方法可以获得传递给方法的变量的原始名称?目前,我必须这样做:
我这样称呼它:
但我正在寻找一种方法来避免重复提供变量的名称,而是使用类似的东西:
在Foo
这种情况下,其中 将是:
在 .NET 中可以实现这样的目标吗?
更新:
我没有想到传递给的Foo
可能是表达式而不是其他人在评论中建议的变量。现在想想,似乎不可能实现什么_除非我可以(以某种方式)保证总会有一个变量?听起来很远,TBH,但也许那里有解决方案。
更新#2:
人们问我真正想要达到的目标。好吧,它与上面的第一种方法非常相似,但如果这会有所帮助,这是我正在使用的实际方法:
我在这样的事情上使用它:
但我正在寻找一种方法来避免重复提供变量的名称。
c# - nameof 什么时候产生一个完全限定的名称?
微软关于 nameof 运算符的文档指出“在类型和命名空间的情况下,生成的名称通常不是完全限定的”。例如,nameof(System.Collections.Generic)
yield"Generic"
和 not "System.Collections.Generic"
。
请注意,他们说“通常”。那么,在哪些不寻常的情况下,生成的名称实际上是完全限定的?
visual-studio-2015 - IronRuby 无法编译使用“nameof”运算符的 c# 项目
我有一个包含许多解决方案的大型 WPF 应用程序,每个解决方案都有许多项目。IronRuby (v1.0.4) 脚本用于按顺序编译所有项目。
问题陈述:
IronRuby 脚本无法编译使用“nameof”运算符的项目,并出现以下错误:
- 在装有 Visual Studio 2017 和 2019 的机器上会出现故障。
- 在装有 Visual Studio 2015 的机器上运行良好。
- 如果我在 VS 20XX 中单独编译项目,项目会被正确编译——但这违背了拥有 IR 脚本的目的。
我到处搜索,但找不到它不适用于更高版本的 Visual Studio 的原因。
软件堆栈:
1. IronRuby 版本:1.0.4
2. 网络版本:4.5.2 及以上
3. 工作 VS 版本:2015 更新 3
3.(a) MSBuild 工具版本:14.0
C:\Program Files (x86)\MSBuild\14.0\Bin>MSBuild.exe -version Microsoft (R) Build Engine version 14.0.27522.0 版权所有 (C) Microsoft Corporation。版权所有。
14.0.27522.0
3.(b) 从命令提示符编译项目时的消息:
- 不工作的 VS 版本:2019 (v16.2.3)
4.(a) MSBuild 工具版本:16.0
C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin>MSBuild.exe -version Microsoft (R) Build Engine version 16.2.37902+b5aaefc9f for .NET Framework 版权所有 (C) Microsoft Corporation . 版权所有。
16.2.37902.0
4.(b) 从命令提示符编译项目时的消息:
Microsoft (R) Build Engine 版本 4.7.3190.0
[Microsoft .NET Framework,版本 4.0.30319.42000] 版权所有 (C) Microsoft
Corporation。版权所有。
- 两台机器上的 MSBuild 版本给出了相同的结果:
将 3(a)、3(b) 与 4(a)、4(b) 进行比较,看起来在更高版本的 VS 构建引擎中存在断开连接,但我无法解决阻止我去的问题到更高的VS版本。
任何帮助表示赞赏。
谢谢,
RDV
c - 在 C 中是否有类似 C# 的名称用于定义指令?
我有经典
有没有办法"SOME_CONSTANT"
像 C# 一样获取字符串nameof(field)
?
编辑
我必须解析一个文件来寻找一些关键字:
如果我调用foo("KEY_A")
它应该返回 1
c# - 如何在方法内部获取传递参数的nameof()?
我正在为我的项目寻找解决方案,我有Dictionary<string, object>
一个辅助方法,女巫正试图从这本字典中获取一些特定的价值。
正如您在下面看到的,如果我没有 a stringKey
,我会尝试stringKey
从@object
( 现在它将返回"object" ) 中获取它。当然,我可以在打电话时做到这一点,但对我来说这看起来太糟糕了。
有没有办法在这种方法中做到这一点?
调用示例:
方法中的期望stringKey
是"Browser",因为在这种情况下:
有特定的需求,我们目前无法将该字典重构为我们的对象或我们的类,调用 withnameof()
是可能的,但不是解决方案。
c# - 是否可以为 C# nameof 运算符编写包装器?
我阅读了有关运营商的相关问答,nameof
但它对我没有帮助,所以我在这里问它。
我想为 C#nameof
运算符编写一个包装器,这样它不仅会返回类属性的名称,而且还会将它与类名连接起来。
让我们假设一个具有单一属性的类:
Console.WriteLine(nameof(Foo.SomeProperty))
现在如果使用(C# 6 or higher)编译,结果将是:
一些财产
所以有可能有这样的东西:
我????
输入了输入Type
,因为我不知道正确的输入Type
是什么。
我希望 PrintFullName 的结果是:
Foo.SomeProperty
我不一定要寻找运行时解决方案。任何编译时解决方法也将有所帮助。
c# - nameOf 运算符和 nameOf 表达式
在 C# 6中的新增功能一文中的 nameof 表达式部分。在本节中,第一句是文章nameof 运算符的链接(C# 参考)。在第二篇文章中是文章表达式的链接其中是 Nameof 表达式部分。我清楚地理解了 nameof 运算符从获得的参数中产生了什么,但是 nameof 运算符、nameof 表达式和 nameof_expression 之间的关系很混乱。在 Expressions 一文中,第一句话是描述 - 表达式是一系列运算符和操作数。据我了解,nameof 运算符获取符号并提供该符号名称的代码部分是 nameof 表达式。这是正确的还是我误解了什么?nameof_expression 的作用是什么?
c# - `nameof()` 在当前上下文中不存在?
所以我想做的很简单。
我正在尝试nameof()
在一些原始类型上运行 a,因为我需要这些常量来满足特定要求。
但是当我尝试这样做时,例如nameof(bool)
它说nameof()
在当前上下文中不存在。
这似乎是所有同义词的情况?
有没有其他方法可以做到这一点,或者我错过了什么。
我想做的是
预期结果:
我必须写下所有这些常量吗?
asp.net-core - 在 ASP.NET Core 3.x MVC 中使用 nameof() 和 Url.Action() 和异步方法
假设我有一个 ASP.NET Core 3.0 MVC 应用程序,它具有一个简单的控制器,其中包含两个操作并使用基于属性的路由:
因此,调用任一操作应该只生成一个显示这两个操作的 URL 的页面。
打开/home/a1
并/home/a2
正确调用相应的操作,但输出有点出乎意料:
这表明它Url.Action()
为第二个动作返回了一个空字符串,而对于第一个动作它工作得很好。
在调试了一段时间后,我发现一篇博客文章将这个问题追踪到 ASP.NET Core 3.0 中的一个重大变化,其中Async
后缀不知何故被Url.Action()
.
作者通过将字符串硬编码为操作名称(在我的情况下为"Action1"
und )解决了这个问题。"Action2"
他还上传了一些重现此行为的示例代码。
但是,我真的更愿意保留nameof
, 以避免以后的重命名/重构问题。
是否有一种干净的方式来使用nameof
或其他类型安全的构造来为函数提供带有Async
后缀的方法Url.Action
?