c#如何编写返回枚举的抽象方法

Yuv*_*evy 9 c# enums abstract

我有一个基类和几个派生自它的类.

我想将基类中的枚举声明为抽象,并且从中派生的每个类都必须创建自己的不同枚举.

我该怎么做?

我尝试了以下方法:在基类中声明一个返回枚举类型的抽象方法,每个实现它的类都将返回它自己的枚举:

public abstract enum RunAtOptions();
Run Code Online (Sandbox Code Playgroud)

但我得到编译错误

"The modifier abstract is not valid for this item"
Run Code Online (Sandbox Code Playgroud)

Ste*_*son 5

你需要返回实际的枚举而不是enum关键字,所以如果你有enum MyEnumType这样的:

public enum MyEnumType
{
    ValueOne = 0,
    ValueTwo = 1
}

public abstract MyEnumType RunAtOptions();
Run Code Online (Sandbox Code Playgroud)

如果你想修改它以使用泛型,你可以让方法返回T并有一个约束来创建T一个结构:

public abstract T RunAtOptions() where T : struct;
Run Code Online (Sandbox Code Playgroud)

C#没有泛型约束来支持枚举类型.

  • _"并且从它派生的每个类都必须创建自己的不同枚举"_ (2认同)
  • 我不认为这回答了这个问题.OP希望为每个派生类提供*不同的枚举*,而不是从一个枚举返回值的方法. (2认同)