枚举类型的获取属性值的问题

CppFile 2017-03-27 02:21:56
enum EnumLanugage:int
{
[System.ComponentModel.Description("中文")]
Chinese=0,
[System.ComponentModel.Description("英文")]
English=1
}

一个类
class message
{
public int enumid;//保存id,如0,1
public string enumname;//保存类型名,如chinese
public string enumdescription;//保存描述,如中文
}

现在我想设计一个函数,给定一个类型名,如EnumLanugage 返回一个list<message>,我查了一下网上的资料,都是传入的是chinese这样的参数,而不是EnumLanugage
函数原型如下
list<message> fun(EnumLanugage)
{

}

这个函数应该如何设计?获取description能知道,关键是怎么传入类型名?
...全文
600 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
trh138320 2017-03-27
  • 打赏
  • 举报
回复
引用 7 楼 trh138320 的回复:
 public List<Message> fun(Type tp)
        {
            if (!tp.IsEnum)
                return null;
            else
            {
                List<Message> result = new List<Message>();
                string[] names = tp.GetEnumNames();
                for (int i = 0; i < names.Length; i++)
                {
                    Message ms = new Message();
                    //获取枚举int值
                    //获取枚举name
                    //获取枚举属性描述
                    result.Add(ms);
                }
                return result;
            }
        }
是这个吗?
            fun(typeof(EnumLanugage));
调用用这个
trh138320 2017-03-27
  • 打赏
  • 举报
回复
 public List<Message> fun(Type tp)
        {
            if (!tp.IsEnum)
                return null;
            else
            {
                List<Message> result = new List<Message>();
                string[] names = tp.GetEnumNames();
                for (int i = 0; i < names.Length; i++)
                {
                    Message ms = new Message();
                    //获取枚举int值
                    //获取枚举name
                    //获取枚举属性描述
                    result.Add(ms);
                }
                return result;
            }
        }
是这个吗?
正怒月神 2017-03-27
  • 打赏
  • 举报
回复
调用 EnumOperate.GetEnumItems(typeof(MyEnum))
public static List<EnumItem> GetEnumItems(Type e)
        {
            List<EnumItem> itemList = new List<EnumItem>();
            foreach (Enum v in Enum.GetValues(e))
            {
                EnumItem item = new EnumItem();
                // TODO: 遍历操作
                item.EnumKey = Convert.ToInt32(v);
                item.EnumValue = v.ToString();
                //item.DescriptionCN = GetDescription(v);
                //item.DescriptionEN = GetDescription(v);
                itemList.Add(item);
            }
            return itemList;

        }

        public class EnumItem
        {
            public int EnumKey { get; set; }
            public string EnumValue { get; set; }
            public string DescriptionCN { get; set; }
            public string DescriptionEN { get; set; }
        }
csdnFUCKINGSUCKS 2017-03-27
  • 打赏
  • 举报
回复
传入Type 然后反射
CppFile 2017-03-27
  • 打赏
  • 举报
回复
引用 1 楼 xdashewan 的回复:
不明白,能举个例子吗,如何得到list<message>
list<message> fun(EnumLanugage) { foreache (var item in enumlanugage { //获取枚举类型的itemname //获取类型名 //获取类型的描述 } //保存到list中 return list } 大致就是这么一个流程,现在的问题是,如何传入EnumLanugage这个类型? }
  • 打赏
  • 举报
回复
Enum.GetNames也只接收type函数
  • 打赏
  • 举报
回复
传入Type……
typeof(EnumLanugage)
xdashewan 2017-03-27
  • 打赏
  • 举报
回复
不明白,能举个例子吗,如何得到list<message>

110,538

社区成员

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

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

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