博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c#枚举自定义,用于数据绑定。
阅读量:5172 次
发布时间:2019-06-13

本文共 5109 字,大约阅读时间需要 17 分钟。

[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property | AttributeTargets.Enum)]        public class EnumSignAttribute : Attribute        {            // Fields            private string _displayName;            public EnumSignAttribute(string displayname)            {                this._displayName = displayname;            }            // Properties            public string DisplayName            {                get                {                    return this._displayName;                }                set                {                    this._displayName = value;                }            }        }  
枚举
public enum DataType    {        [EnumSign("布尔类型")]        Boolean = 4,        [EnumSign("日期时间")]        DateTime = 3,        None = 0,        [EnumSign("数字")]        Numberic = 2,        [EnumSign("字符串")]        String = 1    }

  

public static class EnumsUtils    {        ///         /// 根据object类型的数据,获取枚举类型        ///         /// 
/// ///
public static T ConvertToEnum
(object enumValue) { if (enumValue is int) { return (T)enumValue; } Type type = typeof(T); FieldInfo[] fields = type.GetFields(); int num = 0; foreach (FieldInfo info in fields) { if (num == 0) { num++; } else { T local = (T)info.GetValue(type); if (local.ToString().Equals(enumValue)) { return local; } } } return default(T); } ///
/// 根据枚举标识,获取显示名字 /// ///
///
枚举标识 ///
显示名字
public static string GetAttriValue
(T enumValue) { Type type = typeof(T); FieldInfo[] fields = type.GetFields(); int num = 0; foreach (FieldInfo info in fields) { if (num == 0) { num++; } else { T local = (T)info.GetValue(type); if (local.Equals(enumValue)) { return GetDisplayName(info); } } } return string.Empty; } private static string GetDisplayName(FieldInfo field) { string displayName = string.Empty; object[] arr = field.GetCustomAttributes(typeof(EnumSignAttribute), true); if (arr.Length > 0) { EnumSignAttribute aa = (EnumSignAttribute)arr[0]; displayName = aa.DisplayName; } return displayName; } ///
/// 获取枚举集合列表 /// ///
///
public static EnumList GetSourceEnum(Type type) { EnumList list = new EnumList(); FieldInfo[] fields = type.GetFields(); foreach (FieldInfo field in fields) { EnumItem item = new EnumItem(); if (field.FieldType.IsEnum) { item.Value = ((int)type.InvokeMember(field.Name, BindingFlags.GetField, null, null, null)); object[] arr = field.GetCustomAttributes(typeof(EnumSignAttribute), true); if (arr.Length > 0) { EnumSignAttribute aa = (EnumSignAttribute)arr[0]; item.Display = aa.DisplayName; } item.Name = field.Name; list.Add(item); } } return list; } } [StructLayout(LayoutKind.Sequential)] public struct EnumItem { private string _display; private string _name; private object _value; public EnumItem(string display, string name, object value) { this._display = display; this._name = name; this._value = value; } public string Display { get { return this._display; } set { this._display = value; } } public string Name { get { return this._name; } set { this._name = value; } } public object Value { get { return this._value; } set { this._value = value; } } }
获取枚举集合列表
public class EnumList : BindingList
{ }//方法1:EnumList = EnumsUtils.GetSourceEnum.(typeof(DataType));//方法2:var = EnumsUtils.GetSourceEnum.(typeof(DataType));
数据源

 

 

转载于:https://www.cnblogs.com/noblue/p/4182393.html

你可能感兴趣的文章
ASP.Net之数据绑定
查看>>
Android自动化测试第三季第二讲Toast控件文字获取
查看>>
Google Analytics的能与不能
查看>>
Ubuntu 基本操作
查看>>
JAVA数组的定义及用法
查看>>
18寒假第七测
查看>>
帧中继
查看>>
105:MyBatis常见实用面试题整理
查看>>
Base on QC Automation Framework v1.0
查看>>
bzoj 3261: 最大异或和 (可持久化trie树)
查看>>
UVA 11440 Help Tomisu
查看>>
bzoj千题计划258:bzoj3123: [Sdoi2013]森林
查看>>
开博@纪念
查看>>
linux的正则表达式
查看>>
Android 中EditText 与Keyboard 引起的UI bug
查看>>
20162316刘诚昊 2016-2017-2《程序设计与数据结构》课程总结
查看>>
代理模式---动态代理之JDK
查看>>
POJ 1182 食物链
查看>>
python xml解析和生成
查看>>
MySQL MGR集群搭建
查看>>