一尘不染

枚举“继承”

c#

我在低级名称空间中有一个枚举。我想在“继承”低级枚举的中级命名空间中提供一个类或枚举。

namespace low
{
   public enum base
   {
      x, y, z
   }
}

namespace mid
{
   public enum consume : low.base
   {
   }
}

我希望这是可能的,或者希望可以使用某种类来代替枚举消耗,这将为枚举提供抽象层,但仍允许该类的实例访问枚举。

有什么想法吗?

编辑:我没有将其切换为类中的const的原因之一是我必须使用的服务需要低级枚举。我得到了WSDL和XSD,它们将结构定义为枚举。该服务无法更改。


阅读 270

收藏
2020-05-19

共1个答案

一尘不染

这不可能。枚举不能从其他枚举继承。实际上,所有枚举实际上都必须继承自System.Enum。C#允许使用语法更改看起来像继承的枚举值的基本表示形式,但实际上它们仍然继承自System.enum。

有关完整详细信息,请参见CLI规范的 8.5.2节。规范中的相关信息

  • 所有枚举必须源自 System.Enum
  • 由于上述原因,所有枚举都是值类型,因此是密封的
2020-05-19