一尘不染

通过继承扩展枚举

c#

我知道这有点违反枚举的想法,但是可以在C#/ Java中扩展枚举吗?我的意思是“扩展”,既是向枚举添加新值,也就是从现有枚举继承的OO。

我认为这在Java中是不可能的,因为它是最近才得到的(Java
5?)。但是,C#似乎更愿意容忍那些想做疯狂事情的​​人,因此我认为这可能是有可能的。大概可以通过反思来破解它(不是每个人都实际使用该方法)?

我不一定对实现任何给定的方法感兴趣,它只是在引起我好奇时才引起我的好奇:-)


阅读 264

收藏
2020-05-19

共1个答案

一尘不染

您无法扩展Enums的原因是,这将导致多态性问题。

假设您有一个枚举MyEnum,其值分别为A,B和C,并将其值D扩展为MyExtEnum。

假设某个方法在某处期望myEnum值,例如作为参数。提供MyExtEnum值应该是合法的,因为它是子类型,但是现在当值变成D时,您将如何处理?

为了消除此问题,扩展枚举是非法的

2020-05-19