在运行时向 Enum 添加值

Posted

技术标签:

【中文标题】在运行时向 Enum 添加值【英文标题】:Adding values to Enum in runtime 【发布时间】:2011-08-24 10:37:51 【问题描述】:

我有枚举:

public enum ConsoleMessageType

    Error, Info, BackInfo, Success

我想在运行时给它加值,这可能吗?

【问题讨论】:

这已经被问过了。看***.com/questions/55375/add-values-to-enum @spkinz 这不是问同一个问题。那是关于继承,这是关于在运行时修改类型。 你为什么要这样做? 你可以给枚举任何值,只是没有名字。 @Yasser 请阅读:msmvps.com/blogs/jon_skeet/archive/2010/08/29/…“问题陈述”部分是我要求您说明您想要实现的目标的原因 【参考方案1】:

没有。您应该为此使用字典。

【讨论】:

【参考方案2】:

不,这是不可能的。

C# 是一种强类型语言,它的本质阻止了对此类事物的支持。

查看这篇关于 expando 对象的文章,这可能是解决您的问题的方法:

http://msdn.microsoft.com/en-us/magazine/ff796227.aspx

【讨论】:

我认为针对未知问题提出解决方案不是一个好主意(可能是错误的) 但这是一个提示。我的答案是no,但也许expando objects 会是一个posible 的解决方案(可能,我没有说the solution)

以上是关于在运行时向 Enum 添加值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 运行时向类添加属性?

在 AsyncTask 运行时向 TextView 添加文本

如何在运行时向转发器项目添加属性?

ExtJS:在运行时向 Menu 实例添加新的 MenuItem

在运行时向兔子侦听器动态添加队列

在运行时向对象添加属性,并保存到数据库