【高分】关于C#中的动态创建枚举类型

龙宜坡 2009-08-14 10:31:49
最近有个项目比较棘手!
需求:

从数据库中某张表中动态创建一个枚举类型.


例如:

数据库中存在表Employee,其内容如下:
姓名 编号
Name No.

张三 1234

李四 4562

王五 2334


现在我使用中需要动态创建一个枚举类型以供使用,要创建的枚举如下:

enum enumEmployee
{
张三 = 1234,
李四 = 4562,
王五 = 2334
}

不知如何实现

看了MSDN中使用EnumBuilder类实现,结果还是不会,请过来人指教,谢谢!

MSDN的参考:http://msdn.microsoft.com/zh-cn/library/system.reflection.emit.enumbuilder(VS.80).aspx

说明:外地出差中,不能及时回复,忘谅解!
...全文
5485 36 打赏 收藏 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
SQL77 2012-10-29
  • 打赏
  • 举报
回复

我也一搜索动态创建enum,结果跑这来了。

我的一个想法是提供给我们自己前台编写代码时。
输入一个任意类型后。
我直接对象
object.GetType().GetProperties().就能显示有哪些属性名.
类似IDE中.输入类型.结果就把所有属性名弹出来了.
coyotey 2010-04-17
  • 打赏
  • 举报
回复
为什么我登录了还是有些看不到啊w
jin20000 2009-12-03
  • 打赏
  • 举报
回复
枚举就是要值固定的,值要动态的话,完全没必要用枚举,这算设计的问题
hunzib 2009-12-03
  • 打赏
  • 举报
回复
我也在找动态枚举的方法 一百度就来到这里了
jivi 2009-08-18
  • 打赏
  • 举报
回复
动态创建枚举。好象就失去了枚举的好处了吧。那创建还有什么意义
龙宜坡 2009-08-17
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 li45214521 的回复:]
你觉的名字会没有重复的吗
[/Quote]

按照设计的初衷来讲,是不会有重复的!
龙宜坡 2009-08-17
  • 打赏
  • 举报
回复
@pcnetman888
谢谢!


这个问题我基本也考虑的差不多了,待最终解决方法出来了就结贴!
li45214521 2009-08-16
  • 打赏
  • 举报
回复
你觉的名字会没有重复的吗
微创社(MCC) 2009-08-16
  • 打赏
  • 举报
回复
[1]反射开销很大,几百倍于正常的情况
[2]动态编译开销并不大,几倍于正常情况
[3]动态编译的生成静态场景也不错,至少优行Dictionary方案

[4]动态编译的生成动态场景,在内存中进行处理,如果是处理的是类型中的方法还有点价值,处理枚举有点得不偿失.
龙宜坡 2009-08-16
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 ws_hgo 的回复:]
是啊
为什么一定要用枚举了
[/Quote]

谢谢,暂时先不讨论用不用,只说说如果用的话要怎么样使用!


:)
ws_hgo 2009-08-15
  • 打赏
  • 举报
回复
是啊
为什么一定要用枚举了
wuyq11 2009-08-15
  • 打赏
  • 举报
回复
用类实例存放数据就是通过List<Employee> 获取数据一样使用
用枚举效果不一定好
xiaojia19850414 2009-08-15
  • 打赏
  • 举报
回复
mark
龙宜坡 2009-08-15
  • 打赏
  • 举报
回复
不过这种所谓动态生成代码的方法是值得研究的,以供不时之需!
龙宜坡 2009-08-15
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 hzzasdf 的回复:]
MSDN上是用reflection emit的方法做,等于是从头自己造个assembly,就是属于动态编译的方法。
也可以用codedom做,稍微简单些,可以把assembly建在内存里。说穿了就是用程序动态生成一段代码,然后编译成assembly,再用反射读出来。
不过我觉得楼主可以换个思路,动态编译和反射开销太大,可以改用其他的数据结构来实现。
[/Quote]

是的,做的太复杂或资源开销过大的话将得不偿失!


谢谢!
  • 打赏
  • 举报
回复
MSDN上是用reflection emit的方法做,等于是从头自己造个assembly,就是属于动态编译的方法。
也可以用codedom做,稍微简单些,可以把assembly建在内存里。说穿了就是用程序动态生成一段代码,然后编译成assembly,再用反射读出来。
不过我觉得楼主可以换个思路,动态编译和反射开销太大,可以改用其他的数据结构来实现。
十八道胡同 2009-08-15
  • 打赏
  • 举报
回复
呵呵,
龙宜坡 2009-08-15
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 lcl_data 的回复:]
引用 17 楼 goga21cn 的回复:
也许是我一时心血来潮才想做成枚举的!

其实用Dictionary来解决比用动态枚举的解决方法要好
[/Quote]


这不,来CSDN和大伙讨论讨论!
十八道胡同 2009-08-15
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 goga21cn 的回复:]
也许是我一时心血来潮才想做成枚举的!
[/Quote]
其实用Dictionary来解决比用动态枚举的解决方法要好
龙宜坡 2009-08-15
  • 打赏
  • 举报
回复
也许是我一时心血来潮才想做成枚举的!
加载更多回复(16)
内容概要:本白皮书系统梳理了中国建筑声学行业的发展现状,重点围绕隔音材料的技术体系、市场格局与十大代表企业展开研究。文章厘清了隔音、吸音与防撞三大功能的概念边界,阐述了声音传播的物理机制及声学工程的材料、构造、施工与验证四层级结构;详细介绍了阻尼隔音板、隔音毡、吸音棉、减震构件、防撞软包等核心产品及其性能指标,并分析了行业标准、合规要求与工程实践中的常见误区;最后通过对广州朗音阁等十家大湾区代表性企业的并列介绍,揭示了行业“综合一体型”“材料制造型”“品牌产品型”等多元发展模式,强调系统交付能力、合规性与环保安全正成为企业核心竞争力。; 适合人群:建筑声学与隔音材料领域的工程采购方、建筑设计单位、总承包单位、行业研究者及政策监管相关人员。; 使用场景及目标:①帮助采购方科学选型,规避“以材料参数替代系统性能”等常见误区;②指导设计单位在公检法办案区、文化娱乐、医疗教育等细分场景中制定合理的声学解决方案;③为行业研究者提供市场格局、技术趋势与企业模式的客观参考;④推动企业提升合规意识与系统交付能力。; 阅读建议:读者应结合自身角色选择重点章节阅读——采购方可聚焦第一章、第三章、第五章、第八章及第九章;设计单位宜通读第一至七章;研究者建议全面研读并关注第二章市场格局与第四章技术趋势;所有读者均需注意本报告不进行企业排名,企业介绍篇幅差异不代表实力优劣,具体决策应以实地考察与合同约定为准。

111,128

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧