问题标签 [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# - C# nameof 运算符可以在没有实例的情况下引用实例属性吗?
当我没有实例时,我经常想获取一个类型的实例属性的名称。目前为此,我使用以下内部函数来解释Expression[Func[T, object]]
参数并返回属性名称:
但是,不使用内置nameof
运算符似乎很可惜。
不幸的是,操作员似乎nameof
需要一个实例,或者引用一个静态属性。
有没有一种巧妙的方法来使用nameof
运算符而不是我们的内部函数?例如:
编辑
我完全错了,nameof(ClientService.EndDate)
所描述的语法实际上是按原样工作的。
c# - 表达式与名称
nameof
使用overexpressions
提取属性名称是个好主意吗?
但是叫法不一样
您知道每种方法有哪些优点和缺点?还是只有执行速度很重要?我的意思是编译nameof
后将被替换。const
c# - C# - 将方法作为参数而不指定参数
我有一个方法需要将函数及其所有者类作为输入参数,然后通过反射处理其名称。当然,我可以将几个string
s 作为输入参数,因此该方法如下所示:
并会这样称呼:
但是我想知道是否有任何方法可以避免nameof
每次尝试调用该方法时都编写关键字。对我来说,类似的东西看起来Proceed<Foo>(f => f.Bar)
会好很多。
我想这可以用表达式来解决。我面临的问题是,如果方法Bar
有参数,则必须在调用方法时显式指定它们(在我的情况下这似乎过分,您以后只需要方法的名称)。
所以,我设法找到的最佳解决方案是这个:
然而,它仍然在自己的 args 中指定参数方法的签名,因此不够通用。
我想知道是否有某种方法可以将函数作为参数传递而不指定其参数(前提是我以后只需要它的名称,就像nameof
关键字一样)。
c# - 将属性作为函数参数传递,并将其名称转换为内部字符串
我希望能够将任何可能的类型作为函数参数传递。
现在,传递属性存在问题,例如。
我可以使用:nameof(Foo.Bar),但我无法在 A(Foo.Bar) 中使用 nameof。
我想确定该字符串是从属性创建的,并且我想将属性传递给 API 并在 API 中执行 nameof。
有没有可能通过函数将属性传递给nameof?我想在我的类中隐藏将属性转换为字符串,而不是准备好字符串。如何做到这一点?
编辑:线索是关于:
是什么让 [?] 有控制台输出,例如: Prop.
c# - 使用 nameof 的 EF 点导航属性
拥有这个模型(所有属性都是单一(不是集合)导航属性)
为了获得每个级别的虚线名称,我们必须手动编写它。
对于我们可以使用的第一级,nameof(University.Department)
但对于其余的我们有两个手动编写。
我们怎么能像这样简单nameof(University.Department.Classroom)
呢?
PS我不想使用Select
或SelectMany
扩展方法,我需要将它们作为string
值。
c# - 在 Roslyn 中解析 nameof 表达式
我正在尝试对nameof
a 中的表达式做一些事情CSharpSyntaxWalker
,但是,我注意到NameOfExpressionSyntax
AST 中没有。相反,我得到一个InvocationExpressionSyntax
for whichSemanticModel.GetSymbolInfo
返回不匹配的符号,并且调用的表达式是一个IdentifierNameSyntax
包含标识符 token "nameof"
。
因此,为了识别nameof
表达式,我会在 中添加一个特殊情况VisitInvocationExpression
,查找是否GetSymbolInfo
返回任何内容,如果没有,则查找标识符是否为nameof
. 但是,这对我来说听起来有点不确定。有没有更好的方法可以将这种检测逻辑转移到解析器?
(PS:我知道这可能是出于向后兼容性的原因解析的;只是想知道是否有用于区分nameof
和正常调用的 API。)
c# - 是否可以使用 nameof 运算符来暗示 params 数组的参数名称?
我想我可以利用新的 c# 6 运算符 nameof 从 params 数组隐式构建键/值字典。
例如,考虑以下方法调用:
我不确定是否会有一个 Test 的实现能够从 params 数组中暗示元素的名称。
有没有一种方法可以做到这一点nameof
,而无需反射?
c# - 为什么不允许使用 nameof(object)?
在 C# 6.0 中,您可以这样写:
它们具有相同的结果:
但你不能这样写:
它会产生以下错误:
无效的表达式术语“对象”。
但是你仍然可以这样写:
为什么nameof(object)
不编译?
java - Java 中的等价名称
C# 6.0 引入了nameof()
运算符,该运算符返回一个字符串,该字符串表示放入其中的任何类/函数/方法/局部变量/属性标识符的名称。
如果我有这样的课程:
我可以像这样使用运算符:
这很有用,因为在编译时会检查正确的字符串。如果我拼错了某些属性/方法/变量的名称,编译器会返回错误。此外,如果我重构,所有字符串都会自动更新。例如,请参阅本文档以了解实际用例。
Java中是否有与该运算符等效的?否则,我怎样才能获得相同的结果(或类似的结果)?