[英]C# What is the best way to create an enum that is used by multiple classes?
我有一个供多个类使用的枚举。 实现此目的的最佳方法是什么?
通常,我只是将它们放入命名空间中。 这是Microsoft编写.NET框架的方法,所以我也这样做,以确保一致性:)
将其放在自己的文件中,然后声明:
公共枚举Foo {a,b,c,d}
当然,请考虑您的命名空间。
我会将它们保存在自己的文件中,以方便访问和组织良好。
除非他们以某种方式“属于”那里,否则我通常不会将它们放在课堂上。 就像您有一个带有汽车类型枚举的Car类,以及一个可以设置汽车类型限制的Road类和Bridge类。 Car.CarType
似乎是对此的合乎逻辑的组织。
XML注释有帮助,特别是如果其他人会使用它
/// <summary>
/// Defines the types of cars we support
/// </summary>
public enum CarType
{
/// <summary>
/// VW - the peoples car
/// </summary>
Volkswagen,
您的枚举名称应为复数形式(按照FxCop的指示)
public enum CarTypes
添加数值并使用按位编号,即使您不打算使用按位编号(稍后重新编号也很麻烦)。
Volkswagen = 1,
/// <summary>
/// They own lambo... can't be all that bad
/// </summary>
Audi = 2,
/// <summary>
/// Good, cheap, reliable
/// </summary>
Toyota = 4,
这是在不同名称空间中具有两个枚举的示例:
using TotallyDifferentNameSpace.Enums;
namespace EnumEx
{
class Program
{
static void Main(string[] args)
{
CarType car = CarType.Audi;
PetrolType pType = PetrolType.Diesel;
}
}
public enum CarType
{
Volkswagen,
Audi,
Toyota,
Ford,
Porsche,
Lada
}
}
namespace TotallyDifferentNameSpace.Enums
{
public enum PetrolType
{
Gasoline,
Diesel
}
}
您可以将枚举放入扩展名为.cs的新代码文件中,以使intellisense正常工作,请确保它是您的项目/解决方案的一部分,当然,它应该是公共枚举,以便为您提供解决方案的范围。 如果intellisense是一个问题,请确保您一次构建您的解决方案,我曾经遇到过这个问题,只是通过重新构建解决了它。 如果要正确地组织代码并且要编写大型项目,则命名空间是一个不错的选择。 .NET框架很大。 因此它在命名空间下具有枚举,只是为了更好地理解和组织代码。
我的建议是完全不使用枚举。 改用单例。
喜欢
public class A : ISomeInterface
{
public static readonly A Instance = new A();
private A()
{
}
}
public class B : ISomeInterface
{
public static readonly B Instance = new A();
private B()
{
}
}
在大多数情况下,效果更好,以后再扩展也更好。
最好的祝愿
马策
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.