zoukankan      html  css  js  c++  java
  • System.Reflection.PropertyInfo.cs

    ylbtech-System.Reflection.PropertyInfo.cs
    1.返回顶部
    1、
    #region 程序集 mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
    // C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.1mscorlib.dll
    #endregion
    
    using System.Diagnostics;
    using System.Globalization;
    using System.Runtime.InteropServices;
    
    namespace System.Reflection
    {
        //
        // 摘要:
        //     发现属性 (Property) 的属性 (Attribute) 并提供对属性 (Property) 元数据的访问。
        [ClassInterface(ClassInterfaceType.None)]
        [ComDefaultInterface(typeof(_PropertyInfo))]
        [ComVisible(true)]
        public abstract class PropertyInfo : MemberInfo, _PropertyInfo
        {
            //
            // 摘要:
            //     初始化 System.Reflection.PropertyInfo 类的新实例。
            protected PropertyInfo();
    
            //
            // 摘要:
            //     获取此属性的 get 访问器。
            //
            // 返回结果:
            //     此属性的 get 访问器。
            public virtual MethodInfo GetMethod { get; }
            //
            // 摘要:
            //     获取一个值,该值指示此属性是否可写。
            //
            // 返回结果:
            //     如果此属性可写,则为 true;否则为 false。
            public abstract bool CanWrite { get; }
            //
            // 摘要:
            //     获取一个值,该值指示此属性是否可读。
            //
            // 返回结果:
            //     如果此属性可读,则为 true;否则为 false。
            public abstract bool CanRead { get; }
            //
            // 摘要:
            //     获取此属性 (Property) 的属性 (Attribute)。
            //
            // 返回结果:
            //     此属性的特性。
            public abstract PropertyAttributes Attributes { get; }
            //
            // 摘要:
            //     获取此属性的类型。
            //
            // 返回结果:
            //     此属性的类型。
            public abstract Type PropertyType { get; }
            //
            // 摘要:
            //     获取一个 System.Reflection.MemberTypes 值,该值指示此成员是属性。
            //
            // 返回结果:
            //     指示此成员是属性的一个 System.Reflection.MemberTypes 值。
            public override MemberTypes MemberType { get; }
            //
            // 摘要:
            //     获取此属性的 set 访问器。
            //
            // 返回结果:
            //     此属性的 set 读取器,如果属性是只读的,则为 null。
            public virtual MethodInfo SetMethod { get; }
            //
            // 摘要:
            //     获取一个值,该值指示此属性是否是特殊名称。
            //
            // 返回结果:
            //     如果此属性是特殊名称,则为 true;否则为 false。
            public bool IsSpecialName { get; }
    
            //
            // 摘要:
            //     返回一个值,该值指示此实例是否与指定的对象相等。
            //
            // 参数:
            //   obj:
            //     与此实例进行比较的对象,或为 null。
            //
            // 返回结果:
            //     如果 true 等于此实例的类型和值,则为 obj;否则为 false。
            public override bool Equals(object obj);
            //
            // 摘要:
            //     返回一个数组,其元素反射了由当前实例反射的属性的公共 get 和 set 访问器。
            //
            // 返回结果:
            //     如果找到访问器,此方法将返回一个 System.Reflection.MethodInfo 对象的数组,这些对象反射了由当前实例反射的属性的公共 get
            //     和 set 访问器;如果没有找到,此方法将返回包含零 (0) 个元素的数组。
            public MethodInfo[] GetAccessors();
            //
            // 摘要:
            //     返回一个数组,其元素反射了当前实例反射的属性的公共及非公共(如果指定)get 和 set 取值函数。
            //
            // 参数:
            //   nonPublic:
            //     指示是否应在返回的数组中返回非公共方法。 如果要包括非公共方法,则为 true;否则为 false。
            //
            // 返回结果:
            //     一个数组,其元素反射了当前实例反射的属性的 get 和 set 取值函数。 如果 nonPublic 为 true,则此数组包含公共及非公共 get 和
            //     set  取值函数。 如果 nonPublic 为 false,则此数组仅包含公共 get 和 set 取值函数。 如果没有找到具有指定可见性的访问器,则此方法将返回包含零
            //     (0) 个元素的数组。
            public abstract MethodInfo[] GetAccessors(bool nonPublic);
            //
            // 摘要:
            //     由编译器返回与属性关联的文本值。
            //
            // 返回结果:
            //     一个 System.Object,它包含与此属性关联的文本值。 如果文本值是一个元素值为零的类类型,则返回值为 null。
            //
            // 异常:
            //   T:System.InvalidOperationException:
            //     非托管元数据中的常数表不包含当前属性的常数值。
            //
            //   T:System.FormatException:
            //     值的类型不是公共语言规范 (CLS) 许可的类型。 请参阅“ECMA Partition II”(ECMA 第二部分)规范中的“Metadata”(元数据)。
            public virtual object GetConstantValue();
            //
            // 摘要:
            //     返回此属性的公共 get 访问器。
            //
            // 返回结果:
            //     MethodInfo 对象,表示此属性的公共 get 访问器;如果 null 访问器是非公共的或不存在,则为 get。
            public MethodInfo GetGetMethod();
            //
            // 摘要:
            //     当在派生类中重写时,返回此属性的公共或非公共 get 访问器。
            //
            // 参数:
            //   nonPublic:
            //     指示是否应返回非公共 get 取值函数。 如果要返回非公共取值函数,则为 true;否则为 false。
            //
            // 返回结果:
            //     如果 MethodInfo 为 get,则返回表示该属性的 nonPublic 访问器的 true 对象。 如果 null 为 nonPublic 且 false
            //     访问器是非公共的,或如果 get 为 nonPublic 但不存在 true 访问器,则返回 get。
            //
            // 异常:
            //   T:System.Security.SecurityException:
            //     所请求的方法为非公共且调用方没有 System.Security.Permissions.ReflectionPermission 来反射此非公共方法。
            public abstract MethodInfo GetGetMethod(bool nonPublic);
            //
            // 摘要:
            //     返回此实例的哈希代码。
            //
            // 返回结果:
            //     32 位有符号整数哈希代码。
            public override int GetHashCode();
            //
            // 摘要:
            //     当在派生类中重写时,返回此属性的所有索引参数的数组。
            //
            // 返回结果:
            //     ParameterInfo 类型的数组,它包含索引的参数。 如果未为该属性编制索引,则数组包含 0(零)个元素。
            public abstract ParameterInfo[] GetIndexParameters();
            //
            // 摘要:
            //     返回一个类型数组,其中的类型表示属性的可选自定义修饰符。
            //
            // 返回结果:
            //     System.Type 对象的数组,这些对象标识当前属性的可选自定义修饰符(例如 System.Runtime.CompilerServices.IsConst
            //     或 System.Runtime.CompilerServices.IsImplicitlyDereferenced)。
            public virtual Type[] GetOptionalCustomModifiers();
            //
            // 摘要:
            //     由编译器返回与属性关联的文本值。
            //
            // 返回结果:
            //     一个 System.Object,它包含与此属性关联的文本值。 如果文本值是一个元素值为零的类类型,则返回值为 null。
            //
            // 异常:
            //   T:System.InvalidOperationException:
            //     非托管元数据中的常数表不包含当前属性的常数值。
            //
            //   T:System.FormatException:
            //     值的类型不是公共语言规范 (CLS) 许可的类型。 请参阅 ECMA 第 II 部分规范,元数据逻辑格式:其他结构、签名中使用的元素类型。
            public virtual object GetRawConstantValue();
            //
            // 摘要:
            //     返回一个类型数组,其中的类型表示属性所必需的自定义修饰符。
            //
            // 返回结果:
            //     System.Type 对象的数组,这些对象标识当前属性所必需的自定义修饰符(例如 System.Runtime.CompilerServices.IsConst
            //     或 System.Runtime.CompilerServices.IsImplicitlyDereferenced)。
            public virtual Type[] GetRequiredCustomModifiers();
            //
            // 摘要:
            //     返回此属性的公共 set 访问器。
            //
            // 返回结果:
            //     如果 MethodInfo 访问器是公共的,则为表示此属性的 Set 方法的 set 对象;如果 null 访问器是非公共的,则为 set。
            public MethodInfo GetSetMethod();
            //
            // 摘要:
            //     当在派生类中重写时,返回此属性的 set 访问器。
            //
            // 参数:
            //   nonPublic:
            //     指示如果取值函数为非公共,是否应将其返回。 如果要返回非公共取值函数,则为 true;否则为 false。
            //
            // 返回结果:
            //     此属性的 Set 方法或 null,如下表所示。 值 条件 此属性的 Set 方法。 set 访问器是公共的。 - 或 - nonPublic 为 true
            //     且 set 访问器是非公共的。 null nonPublic 为 true,但属性为只读。 - 或 - nonPublic 为 false 且 set 访问器是非公共的。
            //     - 或 - 不存在 set 访问器。
            //
            // 异常:
            //   T:System.Security.SecurityException:
            //     所请求的方法为非公共且调用方没有 System.Security.Permissions.ReflectionPermission 来反射此非公共方法。
            public abstract MethodInfo GetSetMethod(bool nonPublic);
            //
            // 摘要:
            //     用索引化属性的可选索引值返回指定对象的该属性值。
            //
            // 参数:
            //   obj:
            //     将返回其属性值的对象。
            //
            //   index:
            //     索引化属性的可选索引值。 索引化属性的索引从零开始。 对于非索引化属性,该值应为 null。
            //
            // 返回结果:
            //     指定对象的属性值。
            //
            // 异常:
            //   T:System.ArgumentException:
            //     index 数组不包含所需的参数类型。 - 或 - 找不到该属性的 get 取值函数。
            //
            //   T:System.Reflection.TargetException:
            //     在适用于 Windows 应用商店应用的 .NET 或可移植类库中,改为捕获 System.Exception。 该对象与目标类型不匹配,或者某属性是实例属性但
            //     obj 为 null。
            //
            //   T:System.Reflection.TargetParameterCountException:
            //     index 中的参数数量与索引属性采用的参数数量不匹配。
            //
            //   T:System.MethodAccessException:
            //     在适用于 Windows 应用商店应用的 .NET 或可移植类库中,改为捕获基类异常 System.MemberAccessException。 试图非法访问类中的私有或受保护方法。
            //
            //   T:System.Reflection.TargetInvocationException:
            //     检索属性值时出错。 例如,为一个索引属性指定的索引值超出范围。 System.Exception.InnerException 属性指示出错的原因。
            [DebuggerHidden]
            [DebuggerStepThrough]
            public virtual object GetValue(object obj, object[] index);
            //
            // 摘要:
            //     返回指定对象的属性值。
            //
            // 参数:
            //   obj:
            //     将返回其属性值的对象。
            //
            // 返回结果:
            //     指定对象的属性值。
            [DebuggerHidden]
            [DebuggerStepThrough]
            public object GetValue(object obj);
            //
            // 摘要:
            //     当在派生类中重写时,将返回具有指定绑定、索引和区域性特定信息的指定对象的属性值。
            //
            // 参数:
            //   obj:
            //     将返回其属性值的对象。
            //
            //   invokeAttr:
            //     以下指定该调用特性的枚举成员的按位组合:InvokeMethod、CreateInstance、Static、GetField、SetField、GetProperty
            //     和 SetProperty。 必须指定合适的调用属性。 例如,为了调用静态成员,设置 Static 标志。
            //
            //   binder:
            //     一个对象,它启用绑定、对参数类型的强制、对成员的调用,以及通过反射对 System.Reflection.MemberInfo 对象的检索。 如果 binder
            //     为 null,则使用默认联编程序。
            //
            //   index:
            //     索引化属性的可选索引值。 对于非索引化属性,该值应为 null。
            //
            //   culture:
            //     要为其本地化资源的区域性。 请注意,如果没有为此区域性本地化该资源,则在搜索匹配项的过程中将继续调用 System.Globalization.CultureInfo.Parent
            //     属性。 如果该值为 null,则从 System.Globalization.CultureInfo.CurrentUICulture 属性获取区域性的特定信息。
            //
            // 返回结果:
            //     指定对象的属性值。
            //
            // 异常:
            //   T:System.ArgumentException:
            //     index 数组不包含所需的参数类型。 - 或 - 找不到该属性的 get 取值函数。
            //
            //   T:System.Reflection.TargetException:
            //     该对象与目标类型不匹配,或者某属性是实例属性但 obj 为 null。
            //
            //   T:System.Reflection.TargetParameterCountException:
            //     index 中的参数数量与索引属性采用的参数数量不匹配。
            //
            //   T:System.MethodAccessException:
            //     试图非法访问类中的私有或受保护方法。
            //
            //   T:System.Reflection.TargetInvocationException:
            //     检索属性值时出错。 例如,为一个索引属性指定的索引值超出范围。 System.Exception.InnerException 属性指示出错的原因。
            public abstract object GetValue(object obj, BindingFlags invokeAttr, Binder binder, object[] index, CultureInfo culture);
            //
            // 摘要:
            //     设置指定对象的属性值。
            //
            // 参数:
            //   obj:
            //     将设置其属性值的对象。
            //
            //   value:
            //     新的属性值。
            //
            // 异常:
            //   T:System.ArgumentException:
            //     找不到该属性的 set 取值函数。 - 或 - value 无法转换为 System.Reflection.PropertyInfo.PropertyType
            //     的类型。
            //
            //   T:System.Reflection.TargetException:
            //     在适用于 Windows 应用商店应用的 .NET 或可移植类库中,改为捕获 System.Exception。 obj 的类型与目标类型不匹配,或属性是实例属性,但
            //     obj 是 null。
            //
            //   T:System.MethodAccessException:
            //     在适用于 Windows 应用商店应用的 .NET 或可移植类库中,改为捕获基类异常 System.MemberAccessException。 试图非法访问类中的私有或受保护方法。
            //
            //   T:System.Reflection.TargetInvocationException:
            //     设置属性值时出错。 System.Exception.InnerException 属性指示出错的原因。
            [DebuggerHidden]
            [DebuggerStepThrough]
            public void SetValue(object obj, object value);
            //
            // 摘要:
            //     用索引化属性的可选索引值设置指定对象的该属性值。
            //
            // 参数:
            //   obj:
            //     将设置其属性值的对象。
            //
            //   value:
            //     新的属性值。
            //
            //   index:
            //     索引化属性的可选索引值。 对于非索引化属性,该值应为 null。
            //
            // 异常:
            //   T:System.ArgumentException:
            //     index 数组不包含所需的参数类型。 - 或 - 找不到该属性的 set 取值函数。 - 或 - value 无法转换为 System.Reflection.PropertyInfo.PropertyType
            //     的类型。
            //
            //   T:System.Reflection.TargetException:
            //     在适用于 Windows 应用商店应用的 .NET 或可移植类库中,改为捕获 System.Exception。 该对象与目标类型不匹配,或者某属性是实例属性但
            //     obj 为 null。
            //
            //   T:System.Reflection.TargetParameterCountException:
            //     index 中的参数数量与索引属性采用的参数数量不匹配。
            //
            //   T:System.MethodAccessException:
            //     在适用于 Windows 应用商店应用的 .NET 或可移植类库中,改为捕获基类异常 System.MemberAccessException。 试图非法访问类中的私有或受保护方法。
            //
            //   T:System.Reflection.TargetInvocationException:
            //     设置属性值时出错。 例如,为一个索引属性指定的索引值超出范围。 System.Exception.InnerException 属性指示出错的原因。
            [DebuggerHidden]
            [DebuggerStepThrough]
            public virtual void SetValue(object obj, object value, object[] index);
            //
            // 摘要:
            //     当在派生类中重写时,为具有指定绑定、索引和区域性特定信息的指定对象设置属性值。
            //
            // 参数:
            //   obj:
            //     将设置其属性值的对象。
            //
            //   value:
            //     新的属性值。
            //
            //   invokeAttr:
            //     以下指定该调用特性的枚举成员的按位组合:InvokeMethod、CreateInstance、Static、GetField、SetField、GetProperty
            //     或 SetProperty。 必须指定合适的调用属性。 例如,为了调用静态成员,设置 Static 标志。
            //
            //   binder:
            //     一个对象,它启用绑定、对参数类型的强制、对成员的调用,以及通过反射对 System.Reflection.MemberInfo 对象的检索。 如果 binder
            //     为 null,则使用默认联编程序。
            //
            //   index:
            //     索引化属性的可选索引值。 对于非索引化属性,该值应为 null。
            //
            //   culture:
            //     要为其本地化资源的区域性。 请注意,如果没有为此区域性本地化该资源,则在搜索匹配项的过程中将继续调用 System.Globalization.CultureInfo.Parent
            //     属性。 如果该值为 null,则从 System.Globalization.CultureInfo.CurrentUICulture 属性获取区域性的特定信息。
            //
            // 异常:
            //   T:System.ArgumentException:
            //     index 数组不包含所需的参数类型。 - 或 - 找不到该属性的 set 取值函数。 - 或 - value 无法转换为 System.Reflection.PropertyInfo.PropertyType
            //     的类型。
            //
            //   T:System.Reflection.TargetException:
            //     该对象与目标类型不匹配,或者某属性是实例属性但 obj 为 null。
            //
            //   T:System.Reflection.TargetParameterCountException:
            //     index 中的参数数量与索引属性采用的参数数量不匹配。
            //
            //   T:System.MethodAccessException:
            //     试图非法访问类中的私有或受保护方法。
            //
            //   T:System.Reflection.TargetInvocationException:
            //     设置属性值时出错。 例如,为一个索引属性指定的索引值超出范围。 System.Exception.InnerException 属性指示出错的原因。
            public abstract void SetValue(object obj, object value, BindingFlags invokeAttr, Binder binder, object[] index, CultureInfo culture);
    
            //
            // 摘要:
            //     指示两个 System.Reflection.PropertyInfo 对象是否相等。
            //
            // 参数:
            //   left:
            //     要比较的第一个对象。
            //
            //   right:
            //     要比较的第二个对象。
            //
            // 返回结果:
            //     如果 true 等于 left,则为 right;否则为 false。
            public static bool operator ==(PropertyInfo left, PropertyInfo right);
            //
            // 摘要:
            //     指示两个 System.Reflection.PropertyInfo 对象是否不相等。
            //
            // 参数:
            //   left:
            //     要比较的第一个对象。
            //
            //   right:
            //     要比较的第二个对象。
            //
            // 返回结果:
            //     如果 true 不等于 left,则为 right;否则为 false。
            public static bool operator !=(PropertyInfo left, PropertyInfo right);
        }
    }
    2、
    2.返回顶部
     
    3.返回顶部
     
    4.返回顶部
     
    5.返回顶部
     
     
    6.返回顶部
     
    warn 作者:ylbtech
    出处:http://ylbtech.cnblogs.com/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    前端性能优化总结
    Vue style 深度作用选择器 >>> 与 /deep/(sass/less)
    NPM依赖包版本号~和^的区别及最佳实践
    umi部分使用总结
    FIS 插件机制
    从0到1发布一个npm包
    页面性能监控之performance
    1和new Number(1)有什么区别
    实现一个hoverDelay延迟hover
    触发浏览器回流的属性方法一览表
  • 原文地址:https://www.cnblogs.com/storebook/p/12677710.html
Copyright © 2011-2022 走看看