2011-06-27 85 views
1

我想创建一个枚举来选择可能性,但这些可能性可能会改变。因此,为了能够轻松进行更改,我希望通过数据库表来存储和管理这些可能性。有没有从数据库表动态填充枚举的方法? 谢谢Dov。有没有从数据库表动态填充Enum的方法?

+5

如果他们经常改变想知道他们如何有资格成为'Enum'? – V4Vendetta

+0

他们不会经常改变,但是当他们这样做的时候,通过一个表单来改变数据库似乎更容易和更有效率。 –

回答

0

我不知道这种可能性。但是,为什么不使用Dictionary ??

+0

枚举的优点是它可以放在整个应用程序中使用的方式。这对我来说很重要,尤其是因为我在web上工作,而且我不想不断地使用会话或其他状态对象,或者不断查询数据库,以便数据可用于应用程序的不同部分。 –

+0

@Diller Miller:您不必在此使用会话或任何其他状态变量。根据我的建议,根据数据库获取您的enumuration或dictionary,意味着您必须在每次需要时从数据库加载数据。谁说你不能在整个应用程序中使用Dictionary? –

+0

我想知道是否有一种方法可以在会话开始时从数据库加载一次数据,并且在每次需要数据时都不必这样做。谢谢 –

0

你的意思是你想让枚举自动更改(添加/删除枚举语句)以反映数据库表中的值吗?如果是这样,不,那是不可能的。枚举只是一组命名的整数常量。您必须手动更改枚举并重新编译您的程序集。

+0

是的。这是我的意图。谢谢。 –

0

理论上你有两种选择:

  1. 使用CodeDom构建枚举:
    http://msdn.microsoft.com/en-us/library/y2k85ax6.aspx

  2. 写枚举源代码,一个文本和dynamicaly编译成汇编。

尽管如此,正如其他人所说,如果它动态变化,可能一个枚举不适合你。

+0

非常感谢你 –

0

虽然可以在运行时使用EnumBuilder从数据库值创建Enum,但编译时它不会有任何值。

请参阅this有关替代方法的文章。

+0

非常感谢 –