c# - 通过继承扩展枚举

标签 c# java .net

我知道这与枚举的想法相悖,但是可以在 C#/Java 中扩展枚举吗?我的意思是“扩展”,既包括向枚举添加新值的意义,也包括从现有枚举继承的面向对象意义。

我认为这在 Java 中是不可能的,因为它最近才得到它们(Java 5?)。不过,C# 似乎更宽容那些想做疯狂事情的​​人,所以我认为这可能以某种方式存在。大概它可以通过反射被破解(不是你每个人都实际使用该方法)?

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

最佳答案

不能扩展 Enums 的原因是它会导致多态性问题。

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

假设一个方法在某处需要一个 myEnum 值,例如作为参数。提供一个 MyExtEnum 值应该是合法的,因为它是一个子类型,但是现在当它的值是 D 时你会怎么做?

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

关于c# - 通过继承扩展枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55375/

相关文章:

c# - 如何在 GridView Pager 或 DataPager 中创建 'Show All' 按钮

java - 将本体显示为树

java - GWT ClientBundle (ImageBundle) 中的用户 svg 图片

c# - 从列表中的数组中删除对象

c# - 注入(inject)的依赖项应该公开访问还是私有(private)?

c# - 带有 ODP.Net Oracle.ManagedDataAccess 的 EF 6,如何对类属性使用非大写字母?

javascript - 我希望在 Razor 函数中调用 JS 函数

c# - LINQ 生成不正确的 SQL(引用不存在的表)

java - 如何使用 Apache 客户端接受过期的 ssl 证书?

.net - 无效用户登录。成员(member)服务。网站