• 枚举的显示和绑定


    1.定义一个存储枚举的显示名称的定制特性:

    class EnumShowNameAttribute : Attribute

    2.为每个枚举的成员添加此定制特性。如:

    Code

    3.写显示枚举名称、绑定控件的扩展方法。
    显示枚举名称方法(ToShowName())的思路本来很简单:根据枚举值获取其EnumShowNameAttribute定制特性的ShowName属性值。但我这里的代码并不少,主要用来处理以下几点:
    1.缓存。由于用反射的方式获取值性能不好。于是这里用了一个Dictionary<string,string>来缓存枚举值对应的ShowName,Key是[枚举类的FullName].[枚举值的ToString],Value是ShowName值。那么只是第一次访问的时候需要反射,以后都从缓存里取就行了。
    2.FlagsAttribute标记的枚举。此标志表示这个枚举按位排列。那么不缓存它,且需要拿输入值与枚举的成员一个一个比较。
    另:绑定的时候应尊重控件的AppendDataBoundItems属性,给使用时更多选择。

    Code

    4.使用。直接在枚举上ToShowName就可以得到显示的名称,在ListControl(DropDownList继承此类)用BindEnum方法绑定枚举。如:

    this.ddlTest.BindEnum<Sex>();
    string str = Sex.Man.ToShowName();

    注:有多语言需求的项目和大项目,不推荐使用这种方案,而建议将显示的文字存储在单独的文件中。

  • 相关阅读:
    帝国cms留言表模板修改
    帝国cms内容页模版
    百度竞价中的精确匹配,短语匹配,广泛匹配有什么区别。
    Android打包之多版本、多环境、多渠道
    Jenkins修改默认目录 /root/.jenkins
    Centos挂载硬盘完整图文教程(查看、分区、格式化、挂载)磁盘
    Linux安装mysql后systemctl start mysqld.service不能启动 修改datadir路径后不能启动
    Jenkins版本回滚
    Linux 调整时区与时间同步
    jenkins忘记admin密码的处理方法
  • 原文地址:https://www.cnblogs.com/zhucai/p/enum_bind.html
Copyright © 2020-2023  润新知