const Enum的最佳实践命名约定,避免循环定义

时间:2013-04-03 13:15:54

标签: c# enums naming-conventions

这有点duplicate question,但没有真正的解决方案。

所以我们走了。让我们说:

public enum Color
{
    Red,
    Blue,
    Green
}

public class BlueUnicorn
{
    private const Color Color = Color.Blue;
}
  1. “对大多数枚举类型使用单数名称,但对位字段的枚举类型使用复数名称。”从Microsoft's Enumeration Type Naming Guidelines 检查!

  2. 退回
  3. “考虑给一个属性与其类型相同的名称。”从Microsoft's Names of Type Members审核 查看!

  4. 我应该使用常量而不是readonly,根据Resharper enter image description here 检查!

  5. 但是我收到编译错误。虽然这很奇怪,但没有智能感知。 “BlueUnicorn.Color”常量值的评估涉及一个循环定义。

    我觉得我在这里遇到了常规破解。根据命名惯例的最佳实践命名该字段应该是什么?

2 个答案:

答案 0 :(得分:4)

您可以按照自己的方式命名该字段。要解决编译错误,只需在Color.Blue前面添加枚举的命名空间。

答案 1 :(得分:2)

你不是一个常规裂缝(顺便说一句,很棒!)。公约(2)不适用于属性,不适用于字段或常量。因此,您可以将其称为UnicornColor

作为旁注,我很欣赏这可能不是你的真实代码(除非你真的 正在编写一个Unicorn模拟器!),但在我看来,拥有一个BlueUnicorn类是不对的。拥有一个基于该类中特定常量定义的类似乎太具体了 - 当然Color将是Unicorn类的属性?

我不知道这是否适用于您的真实代码,但无论如何,您的设计可能有点不对,问题永远不会出现?