1. ホーム
  2. c#

[解決済み] 継承によるenumの拡張

2023-03-14 08:12:34

質問

enumの概念に反すると思いますが、C#/Javaでenumを拡張することは可能でしょうか? 私は、enum に新しい値を追加するという意味でも、既存の enum を継承するという OO の意味でも、quot; extend" を意味します。

Java では、かなり最近 (Java 5?) にそれらを得たばかりなので、それは不可能だと仮定します。 しかし、C# はおかしなことをしたい人に寛容なようなので、何らかの方法で可能かもしれないと思いました。 おそらく、リフレクションを介してハックアップすることができます(実際にその方法を使用するわけではありませんが)?

私は必ずしも与えられたメソッドを実装することに興味があるわけではなく、それが思い浮かんだときに私の好奇心を刺激しただけです :-)

どのように解決するのですか?

Enumsを拡張できないのは、ポリモーフィズムの問題につながるからです。

値A, B, Cを持つEnum MyEnumがあり、値Dを持つMyExtEnumとして拡張したとします。

あるメソッドが、例えばパラメータとして、どこかで myEnum 値を期待しているとします。それはサブタイプであるため、MyExtEnum 値を供給することは合法であるはずですが、値が D であることが判明したときにどうするつもりでしょうか?

この問題を解消するために、列挙型の拡張は違法です。