Tag: 魔术字符串

在C#中编译时间reflection

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