我经常编写必须使用魔术字符串来表达属性名称的 C# 代码。每个人都知道魔术弦的问题。它们很难重构,没有编译时检查,而且常常导致难以诊断的问题。然而,C#/.NET 到处都使用它们来表示属性/类/方法名称。
这个问题多年来一直存在,目前唯一可行的解决方案是使用表达式树,然后在运行时解析属性名称。这可以让您获得令人满意的编译时检查,但它会使代码复杂化(需要表达式类型的参数),并且会产生运行时成本。
有谁知道 C#/.NET 是否曾经考虑过添加编译时反射来克服这个普遍存在的问题?
看起来这将是一个简单的添加,它将是一个非破坏性的更改,它将极大地使许多开发人员受益。typeof() 运算符已经执行了一种编译时反射形式,因此看起来像运算符 nameof() (或类似的东西)将是非常互补的。
此外,有谁知道此类功能的任何潜在问题?
谢谢您的帮助。