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

标签 c# enums abstract

我有一个基类和几个从它派生的类。

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

我该怎么做?

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

public abstract enum RunAtOptions();

但是我得到了编译错误

"The modifier abstract is not valid for this item"

最佳答案

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

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

public abstract MyEnumType RunAtOptions();

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

public abstract T RunAtOptions() where T : struct;

C# 没有支持枚举类型的泛型约束。

关于c# 如何编写返回枚举的抽象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45455783/

相关文章:

java - 尽管实现了,具体类方法仍然从抽象类中抛出异常

c# - 128 GB Ram x64 cpu 内存不足问题

c# - 使用 json 传递关联数组 : which type to expect in the controller?

java - 当定义为泛型类参数时,如何获取 Enum 的 valueOf 和值并调用其实现的接口(interface)上的方法

java - 映射具有在 2 个库之间共享的相同值的 2 个枚举

java - AWT ActionListener 作为抽象类

java - 在子类实例中看不到修改 protected 字段的值

c# - 可以结合 C#.net、VB.net 和 ASP.net 吗?

c# - 将 Winforms ListBox 集合绑定(bind)到 List<object>

c# - 无法隐式转换类型 'List<System.Web.Mvc.SelectListItem> to ' IEnumerable<Microsoft.AspNetCore.Mvc.Rendering.SelectListItem>'