精华内容
下载资源
问答
  • /// <summary> /// 获取枚举的Description值 /// </summary> /// <param name="obj">枚举</param> /// <returns></returns> public static string...

    /// <summary>
    /// 获取枚举的Description值
    /// </summary>
    /// <param name="obj">枚举</param>
    /// <returns></returns>
    public static string GetDescription(Enum obj)
    {
    string objName = obj.ToString();
    Type t = obj.GetType();
    FieldInfo fi = t.GetField(objName);
    DescriptionAttribute[] arrDesc = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);

    return arrDesc[0].Description;
    }

    转载于:https://www.cnblogs.com/laukings/p/10937096.html

    展开全文
  • 使用下面的 xml 中的 xml parsing,如何解析 description 细节? <title>All India Lawyer Conference at Lucknow <description> <text><![CDATA[;">]]> <image>...
  • 首先 设置一个枚举类型  public enum TimeOfDay  {  [Description("上午")]  Morning = 1,  [Description("中午")]  Afternoon = 2,  [Description("晚

    首先 设置一个枚举类型

       public enum TimeOfDay
            {
                [Description("上午")]
                Morning = 1,
                [Description("中午")]
                Afternoon = 2,
                [Description("晚上")]
                Evening = 3,
            };


    1,2,3 为对于的value

    morning afternoon evening为name

      public enum TimeOfDay
            {
                [Description("上午")]
                Morning,
                [Description("中午")]
                Afternoon,
                [Description("晚上")]
                Evening,
            };

    //此时从0开始  ,每次递增+1.可以通过Morning=1来更改枚举初始值。

    注意 使用description需要引用  using System.ComponentModel;


    typeof(TimeOfDay).GetEnumName(Value);  可以通过value 获取到name

    typeof(TimeOfDay).GetField(name);可以通过name获取到对应的枚举信息

    fieldinfo.GetCustomAttribute(typeof(DescriptionAttribute), false);用于指定成员的指定类型的自定义特性(false为不检查其上级)以得到description



    以下为示例代码:

     public enum TimeOfDay
            {
                [Description("上午")]
                Moning = 1,
                [Description("中午")]
                Afternoon = 2,
                [Description("晚上")]
                Evening = 3,
            };
    
    
    
    
    
    
    
            /// <summary>
            /// 得到enum的属性值
            /// </summary>
            /// <returns></returns>
            public static void GetDescriptionByValue(int EnumValue)
            {
    
                string name = typeof(TimeOfDay).GetEnumName(EnumValue);
                FieldInfo fieldinfo = typeof(TimeOfDay).GetField(name);
                Object obj = fieldinfo.GetCustomAttribute(typeof(DescriptionAttribute), false);
                DescriptionAttribute ds = (DescriptionAttribute)obj;
                
                Console.WriteLine(ds.Description);
                Console.ReadLine();
    
    
              
    
            }

    运行:

     public static void Main()
            {
                GetDescriptionByValue(1);
            }
    

    注意引用:

    using System;
    using System.ComponentModel;
    using System.Reflection;

    得到结果:上午








    展开全文
  • /// 从枚举中获取Description /// 说明: /// 单元测试-->通过 /// /// 需要获取枚举描述的枚举 /// 描述内容 public static string GetDescription(this Enum enumName) { string _description = string....
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Reflection;
    
    namespace CSharpUtilHelpV2
    {
      /// <summary>
      /// 基于.NET 2.0的枚举工具类
      /// </summary>
      public static class EnumToolV2
      {
        /// <summary>
        /// 从枚举中获取Description
        /// 说明:
        /// 单元测试-->通过
        /// </summary>
        /// <param name="enumName">需要获取枚举描述的枚举</param>
        /// <returns>描述内容</returns>
        public static string GetDescription(this Enum enumName)
        {
          string _description = string.Empty;
          FieldInfo _fieldInfo = enumName.GetType().GetField(enumName.ToString());
          DescriptionAttribute[] _attributes = _fieldInfo.GetDescriptAttr();
          if (_attributes != null && _attributes.Length > 0)
            _description = _attributes[0].Description;
          else
            _description = enumName.ToString();
          return _description;
        }
        /// <summary>
        /// 获取字段Description
        /// </summary>
        /// <param name="fieldInfo">FieldInfo</param>
        /// <returns>DescriptionAttribute[] </returns>
        public static DescriptionAttribute[] GetDescriptAttr(this FieldInfo fieldInfo)
        {
          if (fieldInfo != null)
          {
            return (DescriptionAttribute[])fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false);
          }
          return null;
        }
        /// <summary>
        /// 根据Description获取枚举
        /// 说明:
        /// 单元测试-->通过
        /// </summary>
        /// <typeparam name="T">枚举类型</typeparam>
        /// <param name="description">枚举描述</param>
        /// <returns>枚举</returns>
        public static T GetEnumName<T>(string description)
        {
          Type _type = typeof(T);
          foreach (FieldInfo field in _type.GetFields())
          {
            DescriptionAttribute[] _curDesc = field.GetDescriptAttr();
            if (_curDesc != null && _curDesc.Length > 0)
            {
              if (_curDesc[0].Description == description)
                return (T)field.GetValue(null);
            }
            else
            {
              if (field.Name == description)
                return (T)field.GetValue(null);
            }
          }
          throw new ArgumentException(string.Format("{0} 未能找到对应的枚举.", description), "Description");
        }
        /// <summary>
        /// 将枚举转换为ArrayList
        /// 说明:
        /// 若不是枚举类型,则返回NULL
        /// 单元测试-->通过
        /// </summary>
        /// <param name="type">枚举类型</param>
        /// <returns>ArrayList</returns>
        public static ArrayList ToArrayList(this Type type)
        {
          if (type.IsEnum)
          {
            ArrayList _array = new ArrayList();
            Array _enumValues = Enum.GetValues(type);
            foreach (Enum value in _enumValues)
            {
              _array.Add(new KeyValuePair<Enum, string>(value, GetDescription(value)));
            }
            return _array;
          }
          return null;
        }
      }
    }
    单元测试代码:
    using Microsoft.VisualStudio.TestTools.UnitTesting;
    using System;
    using System.Collections;
    using System.Collections.Generic;
    namespace CSharpUtilHelpV2.Test
    {
      public enum TestEnum
      {
        [System.ComponentModel.Description("第一")]
        One,
        [System.ComponentModel.Description("第二")]
        Two,
        [System.ComponentModel.Description("第三")]
        Three,
        [System.ComponentModel.Description("第五")]
        Five,
        [System.ComponentModel.Description("全部")]
        All
      }
      [TestClass()]
      public class EnumToolV2Test
      {
        [TestMethod()]
        public void GetDescriptionTest()
        {
          string _actual = TestEnum.Five.GetDescription();
          string _expected = "第五";
          Assert.AreEqual(_expected, _actual);
        }
    
        [TestMethod()]
        public void GetEnumNameTest()
        {
          TestEnum _actual = EnumToolV2.GetEnumName<TestEnum>("第五");
          TestEnum _expected = TestEnum.Five;
          Assert.AreEqual<TestEnum>(_expected, _actual);
        }
    
        [TestMethod()]
        public void ToArrayListTest()
        {
          ArrayList _actual = EnumToolV2.ToArrayList(typeof(TestEnum));
          ArrayList _expected = new ArrayList(5);
          _expected.Add(new KeyValuePair<Enum, string>(TestEnum.One, "第一"));
          _expected.Add(new KeyValuePair<Enum, string>(TestEnum.Two, "第二"));
          _expected.Add(new KeyValuePair<Enum, string>(TestEnum.Three, "第三"));
          _expected.Add(new KeyValuePair<Enum, string>(TestEnum.Five, "第五"));
          _expected.Add(new KeyValuePair<Enum, string>(TestEnum.All, "全部"));
          CollectionAssert.AreEqual(_expected, _actual);
    
        }
      }
    }


    展开全文
  • 获取每一个枚举值中的description attribute // 获取到指定的field; if (field != null ) { // 获取指定字段的自定义属性; var des = Attribute.GetCustomAttribute(field, typeof ...

    直接看到代码,其中代码和文字描述都在里面;

    using System;
    using System.Collections.Concurrent;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Linq;
    using System.Reflection;
    using System.Text;
    using System.Threading.Tasks;
    
    //题目就是attribute 反射 中间缓存;
    
    //为啥缓存的key 是我们的type 类型呢?
    
    //首先会定义我们的一个基本的attribute属性,其实net中已经自带这个功能;
    
    [AttributeUsage(AttributeTargets.Field | AttributeTargets.Enum)]
    public class PropertyDesc :Attribute
    {
    
        public string Desc { get; private set; }
    
        public PropertyDesc(string propertyDescription)
        {
            Desc = propertyDescription;
        }
    }
    
    //枚举数据类型的结构;
    public enum Product:byte
    {
    
        [PropertyDesc("电脑")]
        computer =1,
    
        [PropertyDesc("电视")]
        Tv =2
    
    }
    
    public class User
    {
        public string Name { get; set; }
    }
    
    //可以最终写成我们的额动态扩展的东西滴呀;
    //获取的是指定的类型的数据;
    
    public class enumHelper<T> where T:class
    {
    
        private static Dictionary<Type, Dictionary<string, string>> _cache = new Dictionary<Type, Dictionary<string, string>>();
    
    
        /// <summary>
        /// 这种做法不是特别完美,但是,效果还是比较好的;
        /// </summary>
        /// <param name="p"></param>
        /// <returns></returns>
        public static string GetEnumDescription(object p)
        {
            Type t = p.GetType();
            if (!_cache.ContainsKey(t))
            {
                GetAndSaveCacheEnumDescription<T>(t);
            }
            var dic = _cache[t];
            var fieldName = p.ToString();
            var result = dic.ContainsKey(fieldName)?dic[fieldName]:$"Can not find {fieldName} description";
            return result;
    
        }
    
        private static void GetAndSaveCacheEnumDescription<T>(Type t)
        {
            
            var fields = t.GetFields();  //一次性取出所有枚举字段;
            var dic = new Dictionary<string, string>();
            _cache.Add(t, dic);
            foreach (var item in fields)
            {
                var objs = item.GetCustomAttributes(typeof(T),false); //获取到自定的属性
    
                if (objs.Length > 0)  //排除自动属性生成的东西
                {
                    T obj = (T)objs[0]; //只定义了一个属性 => 并强制转换成了 PropertyDesc
                    Type attrType = obj.GetType();  // 继续反射
                    PropertyInfo pi = attrType.GetProperty("Desc");  //获取指定的属性
                    string value = pi.GetValue(obj,null).ToString(); //获取指定属性的值
                    dic.Add(item.Name,value); //添加到字典;
    
                }
            }
                      
        }
    
    }
    
    
    
    /// <summary>
    /// 似乎,我们的额版本二更为强大一些;
    /// </summary>
    public static class EnumExtensions
    {
        //自然就有我们的 优化版本的东西滴呀; 线程安全,并且带自定扩展方法的操作,十分完美的集合;
    
        private static ConcurrentDictionary<Type, Dictionary<object, string>> _cache = new ConcurrentDictionary<Type, Dictionary<object, string>>();
    
        public static string GetDescription(this Enum value)
        {
    
            if (value == null)
            {
                return string.Empty;
            }
            string val = value.ToString();
            //在首次载入添加页面的时候,有些数据可能未空,所以这里必要时添加判断
            if(string.IsNullOrEmpty(val) || val == "0")
            {
                return string.Empty;
            }
            string fielName = value.ToString();
            var type = value.GetType();
    
            Dictionary<object, string> nameDescriptions = null;
    
            nameDescriptions = _cache.GetOrAdd(type,(tempType) =>
            {
                Dictionary<object, string> temp = new Dictionary<object, string>();
                //获取枚举中的所有值;(字段值)
                var enmus = Enum.GetValues(tempType);
    
                foreach (var en in enmus)
                {
                    var field = tempType.GetField(Enum.GetName(tempType,en)); //指定的字段; 等同于 en.ToString()
                    //获取每一个枚举值中的description attribute
                    //获取到指定的field;
                    if (field != null)
                    {
    
                        //获取指定字段的自定义属性;
                        var des = Attribute.GetCustomAttribute(field,typeof(DescriptionAttribute)) as DescriptionAttribute;
    
                        if (des != null)
                        {
                            temp.Add(en,des.Description);
                        }
                        else
                        {
                            temp.Add(en,Convert.ToString(en));
                        }
    
                    }
                }
                return temp;
            });
    
            string description = null;  //大致的思路都是先将所有的枚举description(一次性将所有的)加入我们的 cache 中,然后再从中取出;
            nameDescriptions.TryGetValue(value,out description);
            return description;
    
        }
    }
    
    
    namespace ConsoleApplication58
    {
        class Program
        {
    
            static void Test()
            {
    
                var a=enumHelper<PropertyDesc>.GetEnumDescription(Product.computer);
                var b=enumHelper<PropertyDesc>.GetEnumDescription(Product.computer);
                var c = enumHelper<PropertyDesc>.GetEnumDescription(Product.Tv);
                var d = enumHelper<PropertyDesc>.GetEnumDescription(Product.Tv);
    
                Console.WriteLine(a);
                Console.WriteLine(b);
                Console.WriteLine(c);
                Console.WriteLine(d);
    
                Console.WriteLine("-----------------");
    
                //DescriptionAttribute 是我们组件中 一个封装好的 继承自我们的Attribute 中的一个类;
                Console.WriteLine(Product.computer.GetDescription());
    
    
    
            }
    
            static void Main(string[] args)
            {
    
                Test();
    
                Console.ReadLine();
            }
        }
    }

     

    转载于:https://www.cnblogs.com/mc67/p/7646355.html

    展开全文
  • /// 从枚举中获取Description /// 说明: /// 单元测试-->通过 /// /// 需要获取枚举描述的枚举 /// 描述内容 public static string GetDescription( this Enum enumName) { string _...
  • 解决编写MySQL模板的时候无法获取description技术贴: http://www.cnblogs.com/LonelyShadow/p/4147743.html 感谢以上博主对我的帮助,也希望通过大家的不屑努力,让我们的编程工作越来越Easy!!!
  • /// 从枚举中获取Description /// 说明: /// 单元测试-->通过 /// /// 需要获取枚举描述的枚举 /// 描述内容 public static string GetDescription( this Enum enumName) { string _...
  • linux的/etc/rc.d/init.d/下有很多脚本,这些脚本用于系统...启动的description内容如何用简单方法获取,我现在想到的方法是 读文件,然后解析,但是很麻烦。有没有简单的方法呢,比如已有的命令? 先表示感谢!!
  • 主要介绍了js获取页面description的方法,涉及javascript操作页面元素的相关技巧,需要的朋友可以参考下
  • 现有一个结构体 public struct Desc { private byte val1; [Description("一个属性")] public byte des { get { return val1;... set { val1 = value;...}获取Description代码:string str = ""; De...
  • /// <summary> ... /// 获取枚举变量值的 Description 属性 /// </summary> /// <param name="obj">枚举变量</param> /// <returns>如果包含 Descripti...
  • 参考:... 思路:通过反射获取枚举类的Field,再用 Field 获取 DescriptionAttribute 属性。反之亦然 // 枚举 public enum enumStudent { [Description("性别")] sex = 0, [Descripti...
  • /// <... /// 获取枚举Description的Name /// </summary> /// <param name="enumName">枚举</param> /// <returns></returns> public static string GetDesc...
  • 枚举扩展方法 1 /// <summary>... 2 /// 扩展方法,获得枚举的Description 3 /// </summary> 4 /// <param name="value">枚举值</param> 5 /// <param na...
  • 获取页面的description

    千次阅读 2012-12-22 19:25:06
    var meta = pt.document.getElementsByTagName('meta'); var share_desc = ''; for(i in meta){ if(typeof meta[i].name!="undefined"&&meta[i].name.toLowerCase()=="description"){ share_desc = meta[i].cont
  • 1 定义枚举:public enum Pepole{[Description("男孩")]boy=1,[Description("女孩")]girl=2,man=3}2 泛型方法:获取枚举的说明信息public static Dictionary GetEnumDescription(){Dictionary dic = new Dictionary...
  • 主要介绍了java实现获取网站的keywords,description的相关资料,需要的朋友可以参考下
  • 方法类: public static class EnumExtensions { #region Enum /// <summary> /// 获取枚举变量值的 Description 属性 /// </summary> /// <param nam...
  • 获取枚举类型的描述description using System;using System.Collections.Generic;using System.ComponentModel;using System.Linq;using System.Reflection;using System.Text;using System.Threading....
  • 获取enum的Description

    2011-11-21 15:14:00
     Console.WriteLine(((DescriptionAttribute)arr[0]).Description);  }  } Console.ReadLine();  }  }  ///  /// 用户等级枚举  ///  [Serializable]  public enum CustomerRankType  {  ...
  • c# Enum获取name,value和description 如果我们的枚举类型结构如下,我们需要获取enum的name,value以及description public enum EnumTest { [Description("Attribute")] Attribute...
  • /// 获取指定枚举的Description信息   /// </summary>   /// 枚举值</param>   /// <returns>Description</returns>   public static string GetEnumDescription(TEnum e)   {   FieldInfo ...
  • 枚举 1.属于值类型,继承ValueType ...方法:Description是一个特性,继承自Attribute,Attribute中有方法GetCustomAttribute可以获取到特性实例(在这里是获取DescriptionAttribute的实例),Descrip...
  • 1 定义枚举: public enum Pepole {  [Description("男孩")]  boy=1,  [Description("女孩")]  girl=2,  man=3 } 2 泛型方法...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,319
精华内容 2,127
热门标签
关键字:

获取description