c# - 创建丰富枚举的想法

标签 c# enums

我为自己创建了几个具有相同结构的类——“丰富的枚举”。所以它立即表明它可以通过我将继承的另一个类以某种方式简化。

我编写了一个示例类来向您展示此类枚举包含的内容:

class RichEnum
{
    // ???
}

class MyEnum : RichEnum
{
    // FIELDS AND CONSTRUCTOR(S)
    public readonly string A;
    public readonly int B;
    public readonly Object C;

    public MyEnum(string A, int B, Object C)
    {
        this.A = A;
        this.B = B;
        this.C = C;
    }

    // STATIC INSTANCES
    public static readonly MyEnum Example1 = new MyEnum("string1", 1, "object1");
    public static readonly MyEnum Example2 = new MyEnum("string2", 2, "object2");
    public static readonly MyEnum Example3 = new MyEnum("string3", 3, "object3");

    // SPECIAL INSTANCE
    public static readonly MyEnum Default = new MyEnum("default", 0, "default");

    // SPECIAL OBJECT FOR ITERATING OVER STATIC INSTANCES
    public static readonly MyEnum[] Values = { Example1, Example2, Example3 };

    // METHODS
    public int GetSomeNumber()
    {
        return B + 10;
    }
}

我有很多不同的“MyEnums”,但这些类都具有相同的结构。所以他们有:

  • 各种类型的一些公共(public)只读字段(可变数量)
  • 一个或多个构造器
  • 公共(public)静态只读实例
  • 一个特殊字段,用于在这些实例均不符合条件时返回值。例如,当我使用 MyEnum.Values.FirstOrDefault(...) 时,如果找不到任何内容,它将返回默认值
  • 一些方法

有没有一种方法可以创建一个这种结构的类,然后只继承它,从而使过程更简单,更不容易出错?

最佳答案

看来您正在重新发明轮子:Headspring.Enumeration .

因此,如果您的目标只是拥有这样一个“丰富”的枚举类,那么可以使用 Nuget 包;如果您的目标是自己编写...好吧,从现有技术中寻找灵感永远不会有坏处。

关于c# - 创建丰富枚举的想法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29062021/

相关文章:

c# - Entity Framework 6 : Suppressing divide by zero exceptions

c# - LESS 到 CSS 的转换是在客户端还是在服务器端完成的?

在未引用的程序集中定义的 C# 类型

c# - CRM 中的 RetrieveRequest 和 IOrganizationService.Retrieve 有什么区别?

c++ - 无法使用 'designFlags' 类型的右值初始化 'int' 类型的变量

java - 如何在 JPA 中使用枚举

c# - Linq XML 动态构建

java - 获取列表中的所有枚举值

java - 在 Java 中将 double(基本类型)转换为枚举类型

python - 使用其他属性名称的值创建枚举