在C#中如何动态动态生成一个枚举类型

时间:2022-08-30 17:56:00
各位大师,我现在遇到一个问题,请给予解决办法,十分感谢!就是我想在程序中生成一个枚举类型,但是该枚举类型的元素需要从配置表中读取,请问该怎么解决!!!急等!!!

13 个解决方案

#1


用Dictionary变相实现不就行了

#2


Dictionary不更好吗?

动态生成MS很麻烦!!

#3


关键是我生成的这个枚举类型要用做一个函数的参数类型,所以用Dictionary搞不定的。

#4


这个真的可以搞定.
直接把Dictionary传进去就是了.

引用 3 楼 yiyu918 的回复:
关键是我生成的这个枚举类型要用做一个函数的参数类型,所以用Dictionary搞不定的。

#5


Lost_Painting:不好意思,我 刚开始用C#,而且对Dictionary也不熟悉,你能说的详细点儿吗?怎么传?Dictionary也能像类型那样用吗?

#6


看这个例子


using System;
using System.Collections.Generic;
using System.Linq;

namespace Robot
{
    class Program
    {
      
        static void Main(string[] args)
        {
            Dictionary<int, int> dic = new Dictionary<int, int>();
            dic.Add(1, 1);
            dic.Add(2, 2);
            dic.Add(3, 3);
            Show(dic);
            Console.ReadKey();
        }

        static void Show(Dictionary<int,int> dic)
        {
            foreach (KeyValuePair<int, int> kvp in dic)
            {
                Console.WriteLine(kvp.Key.ToString() + " " + kvp.Value.ToString());
            }
        }
    }

}

#7


Lost_Painting:十分谢谢你这么晚了还回复我的问题!不过,可能我没说清楚,你的办法还是解决不了我的问题。因为我想 一个枚举类型作为一个函数的参数,在别人调用我的函数时,调用者输入的参数值只能从我的枚举类型元素中选,而不能输入别的参数值。

#8


C# 本身 是静态语言,不可能在 调用函数(Code)的时候实现你上面所说的情况。。。 

.net 开发环境也不支持,枚举必须定义好,才能使用,没有动态加载枚举,然后Code 调用这一说。。。。

动态语言应该可以实现你说的,但也不会那么智能(不会配置什么,程序调用就限制什么)


这个问题 应该是你思想上有误区···

#10


EnumBuilder 类
说明并表示枚举类型。 
http://topic.csdn.net/u/20090814/22/b2fa8fca-c2e8-4be0-9ba1-5ef467078eb1.html

#11


我觉得我能理解楼主的意思,因为我也需要类似的效果,比方说在config文件中配置了多条数据库的连接字符串及对应的代号,开发团队的人员能利用vs的枚举智能感知功能方便的选择具体要用到哪个连接字符串,而并不需要记住代号,通过Dictionary["代号"] 这种方式来获得。

#12


不清楚你究竟想干什么,程序员不光要会写程序,还应该学会如何清晰地描述一个问题!

#13


甚至后者比前者还重要得多!

#1


用Dictionary变相实现不就行了

#2


Dictionary不更好吗?

动态生成MS很麻烦!!

#3


关键是我生成的这个枚举类型要用做一个函数的参数类型,所以用Dictionary搞不定的。

#4


这个真的可以搞定.
直接把Dictionary传进去就是了.

引用 3 楼 yiyu918 的回复:
关键是我生成的这个枚举类型要用做一个函数的参数类型,所以用Dictionary搞不定的。

#5


Lost_Painting:不好意思,我 刚开始用C#,而且对Dictionary也不熟悉,你能说的详细点儿吗?怎么传?Dictionary也能像类型那样用吗?

#6


看这个例子


using System;
using System.Collections.Generic;
using System.Linq;

namespace Robot
{
    class Program
    {
      
        static void Main(string[] args)
        {
            Dictionary<int, int> dic = new Dictionary<int, int>();
            dic.Add(1, 1);
            dic.Add(2, 2);
            dic.Add(3, 3);
            Show(dic);
            Console.ReadKey();
        }

        static void Show(Dictionary<int,int> dic)
        {
            foreach (KeyValuePair<int, int> kvp in dic)
            {
                Console.WriteLine(kvp.Key.ToString() + " " + kvp.Value.ToString());
            }
        }
    }

}

#7


Lost_Painting:十分谢谢你这么晚了还回复我的问题!不过,可能我没说清楚,你的办法还是解决不了我的问题。因为我想 一个枚举类型作为一个函数的参数,在别人调用我的函数时,调用者输入的参数值只能从我的枚举类型元素中选,而不能输入别的参数值。

#8


C# 本身 是静态语言,不可能在 调用函数(Code)的时候实现你上面所说的情况。。。 

.net 开发环境也不支持,枚举必须定义好,才能使用,没有动态加载枚举,然后Code 调用这一说。。。。

动态语言应该可以实现你说的,但也不会那么智能(不会配置什么,程序调用就限制什么)


这个问题 应该是你思想上有误区···

#9


#10


EnumBuilder 类
说明并表示枚举类型。 
http://topic.csdn.net/u/20090814/22/b2fa8fca-c2e8-4be0-9ba1-5ef467078eb1.html

#11


我觉得我能理解楼主的意思,因为我也需要类似的效果,比方说在config文件中配置了多条数据库的连接字符串及对应的代号,开发团队的人员能利用vs的枚举智能感知功能方便的选择具体要用到哪个连接字符串,而并不需要记住代号,通过Dictionary["代号"] 这种方式来获得。

#12


不清楚你究竟想干什么,程序员不光要会写程序,还应该学会如何清晰地描述一个问题!

#13


甚至后者比前者还重要得多!