【发布时间】:2012-03-09 06:12:30
【问题描述】:
我经常编写必须使用魔术字符串来表达属性名称的 C# 代码。每个人都知道魔术弦的问题。它们很难重构,没有编译时检查,而且常常导致难以诊断的问题。然而,C#/.NET到处都使用它们来表示属性/类/方法名。
这个问题多年来一直存在,目前唯一可行的解决方案是使用表达式树,然后在运行时解析属性名称。这可以让您获得满意的编译时检查,但会使代码复杂化(需要表达式类型的参数),并且会产生运行时成本。
有谁知道 C#/.NET 是否曾经考虑过添加编译时反射来克服这个普遍存在的问题?
这似乎是一个简单的添加,它将是一个非破坏性的更改,它将极大地受益于许多开发人员。 typeof() 操作符已经执行了一种编译时反射形式,所以看起来像操作符 nameof() (或类似的东西)将是非常互补的。
此外,有谁知道此类功能存在任何潜在问题?
感谢您的帮助。
【问题讨论】:
-
@KirkWoll 这不是那个问题的重复。问题的第二段表明 MgSam 熟悉表达式树技术;问题是作品中是否可能有一个新功能可以为问题提供新的解决方案。
-
@phoog,真的。但这是 解决方案,这一模式在 BCL 中无处不在就证明了这一点。
-
@KirkWoll 但回答“是否会有更好的解决方案?”这个问题并不是特别有帮助。通过说“这是现有的解决方案。”
标签: c# .net compile-time strong-typing magic-string