精华内容
下载资源
问答
  • //获取属性的描述对象 Object.getOwnPropertyDescriptor let obj ={foo:123} Object.getOwnPropertyDescriptor(obj)
    //获取属性的描述对象 Object.getOwnPropertyDescriptor
    let obj ={foo:123}
    Object.getOwnPropertyDescriptor(obj)
    
    展开全文
  • 主要给大家介绍了关于C#如何获取枚举的描述属性的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
  • 通过反射,我们能获取到枚举类型的描述属性。 首先我们需要给枚举类型添加描述属性属性都没有是不可能取到的),[Description]就是描述属性,使用这个属性,我们需要添加 using System.ComponentModel 引用。 ...

        在使用枚举类型时,我们需要取名称和值,甚至有时候还需要取枚举类型的描述。通过反射,我们能获取到枚举类型的描述属性。

        首先我们需要给枚举类型添加描述属性(属性都没有是不可能取到的),[Description]就是描述属性,使用这个属性,我们需要添加 using System.ComponentModel 引用。

    public enum EnumSex
    {
        /// <summary>
        ////// </summary>
        [Description("")]
        Male = 0,
        /// <summary>
        ////// </summary>
        [Description("")]
        Female = 1
    }

        接着我们需要写一个获取描述属性的方法,FieldInfo需要添加 using System.Reflection 引用,DescriptionAttribute需要添加 using System.ComponentModel 引用。

    public string GetEnumDescription(Enum enumValue)
    {
        string value = enumValue.ToString();
        FieldInfo field = enumValue.GetType().GetField(value);
        object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false);    //获取描述属性
        if (objs == null || objs.Length == 0)    //当描述属性没有时,直接返回名称
            return value;
        DescriptionAttribute descriptionAttribute = (DescriptionAttribute)objs[0];
        return descriptionAttribute.Description;
    }

        好了,现在我们可以获取到枚举的描述了。

    string sex = GetEnumDescription(EnumSex.Female);    //sex = "女"

        同理,我们可以给枚举类型赋上其他类型的属性,比如Obsolete,在GetEnumDescription方法里面将DescriptionAttribute换成ObsoleteAttribute,一样可以取到属性。

    转载于:https://www.cnblogs.com/TanSea/p/Enum-Description.html

    展开全文
  • C#反射机制来获取属性的描述

    千次阅读 2016-12-02 18:52:46
    通过C#反射获取类和类中属性的描述信息 自定义特性代码 [System.Serializable] [System.AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = false)] ...

    通过C#反射获取类和类中属性的描述信息

    自定义特性代码

        [System.Serializable]
        [System.AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = false)]
        [System.Runtime.InteropServices.ComVisible(true)]
        public class RecordAttribute : Attribute //注意:自定义特性名称后面需加Attribute
        {
            private string recordType;      // 记录类型:更新/创建
            private string author;          // 作者
            private DateTime date;          // 更新/创建 日期
            private string memo;         // 备注
    
    
            // 构造函数,构造函数的参数在特性中也称为“位置参数”。
            public RecordAttribute(string recordType, string author, string date)
            {
                this.recordType = recordType;
                this.author = author;
                this.date = Convert.ToDateTime(date);
            }
    
    
            // 对于位置参数,通常只提供get访问器
            public string RecordType { get { return recordType; } }
            public string Author { get { return author; } }
            public DateTime Date { get { return date; } }
    
    
            // 构建一个属性,在特性中也叫“命名参数”
            public string Memo
            {
                get { return memo; }
                set { memo = value; }
    
            }
        }
    我们发现在这个特性的定义上,又用了三个特性去描述它。这三个特性分别是:Serializable、AttributeUsage 和 ComVisible。Serializable特性我们前面已经讲述过,ComVisible简单来说是“控制程序集中个别托管类型、成员或所有类型对 COM 的可访问性”(微软给的定义)。这里我们应该注意到:特性本身就是用来描述数据的元数据,而这三个特性又用来描述特性,所以它们可以认为是“元数据的元数据”(元元数据:meta-metadata)。

    AllowMutiple 属性用于设置该特性是不是可以重复地添加到一个类型上(默认为false),
    Inherited 就更复杂一些了,假如有一个类继承自我们的DemoClass,那么当我们将RecordAttribute添加到DemoClass上时,DemoClass的子类也会获得该特性。而当特性应用于一个方法,如果继承自该类的子类将这个方法覆盖,那么Inherited则用于说明是否子类方法是否继承这个特性。

    定义一个测试用类

        [Record("ITone", "ITone", "2018-8-8")]
        [Record("ITone", "ITone", "2018-8-8", Memo = "测试仪")]
        [Record("ITone", "ITone", "2018-8-8")]
        public class TestClass
        {
            [Description("中文名字")]
            public string Name { get; set; }
            [Description("描述用户的ID")]
            public string UserID { get; set; }
    
    
            [Obsolete("请使用新的方法 ")]
            public void SendMsg()
            {
                Console.Write("xxxxx");
            }
            public void SendMsg(string ms)
            {
                Console.Write("x1222xxxx");
            }
        }
    测试代码

            static void Main(string[] args)
            {
                Type t = typeof(TestClass);
                Object[] records = t.GetCustomAttributes(typeof(RecordAttribute), false);
                foreach (RecordAttribute record in records)
                {
                    Console.WriteLine("      类型:{0}", record.RecordType);
                    Console.WriteLine("      作者:{0}", record.Author);
                    Console.WriteLine("      日期:{0}", record.Date.ToShortDateString());
                    if (!String.IsNullOrEmpty(record.Memo))
                    {
                        Console.WriteLine("      备注:{0}", record.Memo);
                    }
                }
                //获取这个对象的所有公共属性
                PropertyInfo[] zh = t.GetProperties();
                foreach (var item in zh)
                {
                    //获取属性的描述
                   Object[] obs= item.GetCustomAttributes(typeof(DescriptionAttribute),false);
                    foreach (DescriptionAttribute record in obs)
                    {
                        Console.WriteLine("      类型:{0}", record.Description);
                      
                    }
                }    
                //通过反射来创建一个实体                                          
                TestClass ass = (TestClass)Assembly.GetExecutingAssembly().CreateInstance("Demo_One.TestClass");
                ass.SendMsg("");
            }



    展开全文
  • 没有优化,凑合着用吧。需要using System.... /// 根据属性描述获取枚举值 /// </summary> /// <typeparam name="T">类型</typeparam> /// <param name="des">属性说明</param&...

    没有优化,凑合着用吧。需要using System.ComponentModel;


     /// <summary>
     /// 根据属性描述获取枚举值
     /// </summary>
     /// <typeparam name="T">类型</typeparam>
     /// <param name="des">属性说明</param>
     /// <returns>枚举值</returns>
     public static T GetEnum<T>(string des) where T : struct, IConvertible
     {
             Type type = typeof(T);
             if (!type.IsEnum)
             {
                     return default(T);
             }
             T[] enums = (T[])Enum.GetValues(type);
             T temp;
             if (!Enum.TryParse(des, out temp))
             {
                     temp = default(T);
             }
             for (int i = 0; i < enums.Length; i++)
             {
                     string name = enums[i].ToString();
                     FieldInfo field = type.GetField(name);
                     object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false);
                     if (objs == null || objs.Length == 0)
                     {
                             continue;
                     }
                     DescriptionAttribute descriptionAttribute = (DescriptionAttribute)objs[0];
                     string edes = descriptionAttribute.Description;
                     if (des == edes)
                     {
                             temp = enums[i];
                             break;
                     }
             }
    
             return temp;
     }

    字符串转为枚举值:


                    //字符串转为枚举
                    public static T ToEnum<T>(this string enumName) where T : struct, IConvertible
                    {
                            Type type = typeof(T);
                            if (!type.IsEnum)
                            {
                                    return default(T);
                            }
                            T temp;
                            if (!Enum.TryParse<T>(enumName, out temp))
                            {
                                    temp = default(T);
                            }
                            return temp;
                    }

    下面是获取枚举的属性描述的代码,来源于https://www.cnblogs.com/TanSea/p/6923743.html


            //获取属性描述
            public static string GetEnumDescription(Enum enumValue)
            {
                string value = enumValue.ToString();
                FieldInfo field = enumValue.GetType().GetField(value);
                object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false);    //获取描述属性
                if (objs == null || objs.Length == 0)    //当描述属性没有时,直接返回名称
                {
                    return value;
                }
    
                DescriptionAttribute descriptionAttribute = (DescriptionAttribute)objs[0];
                return descriptionAttribute.Description;
            }

     

    展开全文
  • 获取对象属性的描述

    千次阅读 2013-11-21 11:31:26
    return "未知属性名称"; } public static string GetPropertyName(Expression, object>> expr) { var rtn = ""; if (expr.Body is UnaryExpression) { rtn = ((MemberExpression)((UnaryExpression)expr....
  • using System; using System.ComponentModel; using System.Reflection; /// <summary> /// 枚举类扩展 /// </summary> public static class EnumExt ... public static string ToDescri.
  • 2–属性描述对象 当定义set和get时,不能定义value和writable属性 get必须有返回,set必须有参数 2----对象的获取 for in可以遍历所有可枚举属性 浅紫色是不可枚举属性 1----将可枚举属性设置为不可枚举属性 当...
  • 1 获取简单表明和字段属性 SELECTsyscolumns.name,systypes.name,syscolumns.isnullable, syscolumns.length FROMsyscolumns,systypes WHEREsyscolumns.xusertype=systypes.xusertype ANDsyscolumns.id=objec...
  • getattr 获取属性方法使用

    千次阅读 2019-07-04 17:42:44
    描述 getattr()函数用于返回一个对象属性值。 语法 getattr 语法: getattr(object, name[, default]) 参数 object -- 对象。 name -- 字符串,对象属性。 default -- 默认返回值,如果不提供该参数,在...
  • 主要介绍了ECMAScript 5中属性描述符详解,本文讲解了Object.defineProperty、数据描述符、存取描述符、获取属性描述符、对象控制等内容,需要朋友可以参考下
  • java获取实体类的属性名和属性

    千次阅读 2021-01-28 12:22:45
    在Java反射中Field类描述的是类属性信息,功能包括: 获取当前对象成员变量类型 对成员变量重新设值 Field常用方法 getType(): 获取属性声明时类型对象(返回class对象) getGenericType() : 返回属性声...
  • 属性的设置和获取

    2017-08-09 16:52:42
    含义:对象的属性的属性(可读,可写,可更改),也可以称之为 对象的属性的属性描述符。  - 属性描述符: Object.getOwnPropertyDescriptor(obj,"name");11 第一个参数:对应的对象  第二个参数:对应对象...
  • JS-属性描述

    2020-10-27 21:00:40
    1.2 如何获取属性描述符?1.2.1 获取单个属性的属性描述符1.2.2 获取多个属性的属性描述符1.3 如何设置属性描述符?二、数据描述符三、存储描述符 一、概述 1.1 什么是属性描述符? 属性描述符(Property Descriptor...
  • //如何通过类的描述类,获取这个类里边的,所有属性或者某个属性的信息,所有方法或者某个方法的信息 import java.lang.reflect.Field; import java.lang.reflect.Method; class A{ public String name; private int...
  • 枚举定义,获取枚举的描述 定义枚举熟悉,描述 /// <summary> /// 枚举注释的自定义属性类 /// </summary> public class EnumDescriptionAttribute : Attribute { private string m_...
  • 属性描述

    2019-12-06 12:49:23
    属性描述符 属性描述符的配置参考:...属性描述符:它表达了一个属性的相关信息(元数据),它本质是一个对象. 1.数据属性 2.存储器属性 1.当给它赋值,会自动运行一个函数 2.当获取它的值时,会...
  • 使用从承诺解析对象获取属性 安装 使用安装promise-get : npm install --save promise-get 用法 模块使用 var get = require ( 'promise-get' ) ; get ( 'key.deep' , Promise . resolve ( { key : { deep : '...
  • js属性描述对象

    2019-07-23 22:07:37
    javascript属性描述结构 6个元属性 value 属性值 writable 属性是否可写 enumerable 属性是否可遍历 configurable 属性是否可配置(属性描述对象可写性) ...用于获取属性描述对象 Object.getOwnPrope...
  • C# 获取属性Attribute

    2019-09-28 23:00:42
    在开发WCF过程中,我们总是会遇到使用[DataContract]、[ServiceContract]、[OperationContract]来描述或者说是规范类,但是一直不知道这些事干啥用,怎么获取这些我们设定值,也就是如何验证某一个类namespace...
  • BeanWrapper提供了设置和获取属性值(单个的或者是批量的),获取属性描述信息、查询只读或者可写属性等功能。不仅如此,BeanWrapper还支持嵌套属性,你可以不受嵌套深度限制对子属性的值进行设置。所以,...
  • 本文实例讲述了JS获取iframe中longdesc属性的方法。分享给大家供大家参考。具体如下: longdesc 属性指向一个包含描述信息的页面。 <!DOCTYPE html> <html> <body> <iframe id="myframe" src="/...
  • 方法类: public static class EnumExtensions { #region Enum /// <summary> /// 获取枚举变量值 Description 属性 /// </summary> /// <param nam...
  • 根据 ECMA-262(ECMAScript)第三版中描述,for-in 语句的属性遍历的顺序是由对象定义时属性的书写顺序决定的。而在现有最新的 ECMA-262(ECMAScript)第五版规范中,对 for-in 语句的遍历机制又做...
  • Field f =Test.class.getDeclaredField("a"); boolean falg = f.getAnnotation...PropertyDescriptor类:(属性描述器)  PropertyDescriptor类表示JavaBean类通过存储器导出一个属性。主要方法:  1. getPropert...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,613
精华内容 1,845
关键字:

获取属性的描述