zoukankan      html  css  js  c++  java
  • 关于Enum Type 设计问题

    最近项目中遇到一个问题需要把一个enum type绑定到combox,而且要有space.开始定义如下

      public enum SearchConfigType
        {
            SmartFrequency,
            EveryNDays,
            Weekly,
            Monthly,
        }

    使用我们库函数AddSpaceBeforeUppercaseChar 有点问题SmartFrequency --> Smart Frequency,EveryNDays--->EveryN Days, 这个库函数在其他地方要用,不能修改。

    如果改成

      public enum SearchConfigType
        {
            Smart_Frequency,
            Every_N_Days,
            Weekly,
            Monthly,
        }

    可以使用

     public class EnumnToStringConverter : IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                try
                {
                    if (value == null)
                        return null;
                     string name = value.ToString().Replace('_',' ');
                     return name.AddSpaceBeforeUppercaseChar();
                    
                }
                catch
                {
                    return value;
                }
            }

            public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                throw new NotImplementedException();
            }
        }。

    只需要约定用‘_’来代替‘ ’,EnumnToStringConverter 可以自动实现add space. 在datagrid,combox绑定Enumn 都能使用。这也是Type 设计的一个小技巧

  • 相关阅读:
    原型模式
    浅复制和深复制
    适配器模式
    外观模式
    模板方法
    建造者模式
    代理模式
    Centos7重新安装yum
    关于mongodb创建索引的一些经验总结(转)
    MongoDB查询语句(转)
  • 原文地址:https://www.cnblogs.com/mjgb/p/2075103.html
Copyright © 2011-2022 走看看