1. ホーム
  2. c#

[解決済み] Enum "Inheritance" (継承)

2022-03-21 10:55:19

質問

低レベルのネームスペースにenumがあります。低レベルの列挙型を継承するクラスまたは列挙型を中間レベルのネームスペースに用意したいのですが、どうすればよいですか?

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

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

私はこれが可能であることを望んでいます。あるいは、enumの抽象化レイヤーを提供するenum consumeの代わりとなる何らかのクラスが、そのクラスのインスタンスがenumにアクセスできるようになることを望んでいるのです。

いかがでしょうか?

EDIT 私がこれをクラス内のconstに切り替えなかった理由の1つは、私が消費しなければならないサービスで低レベルのenumが必要とされるからである。私はWSDLとXSDを渡されましたが、それらはenumとして構造を定義しています。このサービスは変更することができません。

どうすればいいですか?

これは不可能です。 列挙型は他の列挙型から継承することができません。実際、すべての列挙型は実際には System.Enum . C#では、継承のように見えるenum値の基本的な表現を変更する構文がありますが、実際にはSystem.enumから継承しています。

の8.5.2項を参照してください。 CLI仕様 をご覧ください。 仕様書からの関連情報

  • すべての列挙型は System.Enum
  • 以上のことから、すべての列挙型は値型であり、したがってシールされています。