这有点duplicate question,但没有真正的解决方案。
所以我们走了。让我们说:
public enum Color
{
Red,
Blue,
Green
}
public class BlueUnicorn
{
private const Color Color = Color.Blue;
}
“对大多数枚举类型使用单数名称,但对位字段的枚举类型使用复数名称。”从Microsoft's Enumeration Type Naming Guidelines 检查!
“考虑给一个属性与其类型相同的名称。”从Microsoft's Names of Type Members审核 查看!
我应该使用常量而不是readonly,根据Resharper 检查!
但是我收到编译错误。虽然这很奇怪,但没有智能感知。 “BlueUnicorn.Color”常量值的评估涉及一个循环定义。
我觉得我在这里遇到了常规破解。根据命名惯例的最佳实践命名该字段应该是什么?
答案 0 :(得分:4)
您可以按照自己的方式命名该字段。要解决编译错误,只需在Color.Blue
前面添加枚举的命名空间。
答案 1 :(得分:2)
你不是一个常规裂缝(顺便说一句,很棒!)。公约(2)不适用于属性,不适用于字段或常量。因此,您可以将其称为UnicornColor
。
作为旁注,我很欣赏这可能不是你的真实代码(除非你真的 正在编写一个Unicorn模拟器!),但在我看来,拥有一个BlueUnicorn类是不对的。拥有一个基于该类中特定常量定义的类似乎太具体了 - 当然Color
将是Unicorn
类的属性?
我不知道这是否适用于您的真实代码,但无论如何,您的设计可能有点不对,问题永远不会出现?