ylbtech-System.Reflection.FieldInfo.cs |
1、
#region 程序集 mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\mscorlib.dll
#endregion
using System.Diagnostics;
using System.Globalization;
using System.Runtime.InteropServices;
namespace System.Reflection
{
//
// 摘要:
// 发现字段的属性并提供对字段元数据的访问权限。
[ClassInterface(ClassInterfaceType.None)]
[ComDefaultInterface(typeof(_FieldInfo))]
[ComVisible(true)]
public abstract class FieldInfo : MemberInfo, _FieldInfo
{
//
// 摘要:
// 初始化 FieldInfo 类的新实例。
protected FieldInfo();
//
// 摘要:
// 获取 RuntimeFieldHandle, ,这是内部元数据字段的表示形式的句柄。
//
// 返回结果:
// 字段的内部元数据表示句柄。
public abstract RuntimeFieldHandle FieldHandle { get; }
//
// 摘要:
// 获取一个值,该值指示字段是否为公共。
//
// 返回结果:
// true 如果此字段为公共的则否则为 false。
public bool IsPublic { get; }
//
// 摘要:
// 获取一个值,该值指示字段是否为私有。
//
// 返回结果:
// true 如果此字段为私有;否则为 false.
public bool IsPrivate { get; }
//
// 摘要:
// 获取一个值,该值指示是否由描述此字段的可见性 System.Reflection.FieldAttributes.Family; 也就是说,该字段是仅在其类以及派生的类中可见。
//
// 返回结果:
// true 如果对此字段的访问准确描述由 System.Reflection.FieldAttributes.Family; 否则为 false。
public bool IsFamily { get; }
//
// 摘要:
// 获取一个值,该值指示是否由描述此字段的潜在可见 System.Reflection.FieldAttributes.Assembly; 也就是说,字段都可见最多为其他类型在同一程序集中,而看不到派生类型的程序集之外。
//
// 返回结果:
// true 如果此字段的可见性准确描述由 System.Reflection.FieldAttributes.Assembly; 否则为 false。
public bool IsAssembly { get; }
//
// 摘要:
// 获取一个值,该值指示是否由描述此字段的可见性 System.Reflection.FieldAttributes.FamANDAssem; 即,该字段可以访问来自派生类,但只有当它们处于相同的程序集。
//
// 返回结果:
// true 如果对此字段的访问准确描述由 System.Reflection.FieldAttributes.FamANDAssem; 否则为 false。
public bool IsFamilyAndAssembly { get; }
//
// 摘要:
// 获取一个值,该值指示是否由描述此字段的潜在可见 System.Reflection.FieldAttributes.FamORAssem; 也就是说,字段可由派生类无论他们身在何处,并由同一程序集中的类。
//
// 返回结果:
// true 如果对此字段的访问准确描述由 System.Reflection.FieldAttributes.FamORAssem; 否则为 false。
public bool IsFamilyOrAssembly { get; }
//
// 摘要:
// 获取一个值,该值指示字段是否为静态。
//
// 返回结果:
// true 如果此字段为静态;否则为 false。
public bool IsStatic { get; }
//
// 摘要:
// 获取一个值,该值指示字段是否只能在构造函数主体中设置。
//
// 返回结果:
// true 如果该字段具有 InitOnly 属性设置; 否则为 false。
public bool IsInitOnly { get; }
//
// 摘要:
// 获取一个值,该值指示是否在写入的值编译时间,并且不能更改。
//
// 返回结果:
// true 如果该字段具有 Literal 属性设置; 否则为 false。
public bool IsLiteral { get; }
//
// 摘要:
// 获取一个值,该值指示此字段是否有 NotSerialized 属性。
//
// 返回结果:
// true 如果该字段具有 NotSerialized 属性设置; 否则为 false。
public bool IsNotSerialized { get; }
//
// 摘要:
// 获取一个值,该值指示是否在相应 SpecialName 属性设置 System.Reflection.FieldAttributes 枚举器。
//
// 返回结果:
// true 如果 SpecialName 属性设置 System.Reflection.FieldAttributes; 否则为 false。
public bool IsSpecialName { get; }
//
// 摘要:
// 获取一个值,该值指示是否在相应 PinvokeImpl 属性设置 System.Reflection.FieldAttributes。
//
// 返回结果:
// true 如果 PinvokeImpl 属性设置 System.Reflection.FieldAttributes; 否则为 false。
public bool IsPinvokeImpl { get; }
//
// 摘要:
// 获取一个值,该值指示当前的字段在当前信任级别中是否是安全关键或安全可靠关键。
//
// 返回结果:
// true 如果当前字段在当前信任级别; 为安全关键或安全可靠关键 false 如果它是透明的。
public virtual bool IsSecurityCritical { get; }
//
// 摘要:
// 获取与此字段相关联的属性。
//
// 返回结果:
// FieldAttributes 此字段。
public abstract FieldAttributes Attributes { get; }
//
// 摘要:
// 获取此字段对象的类型。
//
// 返回结果:
// 此字段对象的类型。
public abstract Type FieldType { get; }
//
// 摘要:
// 获取一个值,该值指示在当前信任级别是否透明当前字段。
//
// 返回结果:
// true 如果在当前信任级别; 此字段为安全透明否则为 false。
public virtual bool IsSecurityTransparent { get; }
//
// 摘要:
// 获取 System.Reflection.MemberTypes 值,该值指示此成员是字段。
//
// 返回结果:
// System.Reflection.MemberTypes 值指示此成员是字段。
public override MemberTypes MemberType { get; }
//
// 摘要:
// 获取一个值,该值指示当前的字段在当前信任级别是安全可靠关键。
//
// 返回结果:
// true 如果在当前信任级别; 当前字段是安全可靠关键 false 如果它是安全关键的或透明。
public virtual bool IsSecuritySafeCritical { get; }
//
// 摘要:
// 获取 System.Reflection.FieldInfo 表示由指定的句柄,用于指定泛型类型的字段。
//
// 参数:
// handle:
// 一个 System.RuntimeFieldHandle 结构,其中包含内部元数据字段的表示形式的句柄。
//
// declaringType:
// 一个 System.RuntimeTypeHandle 结构,其中包含此字段定义的泛型类型的句柄。
//
// 返回结果:
// 一个 System.Reflection.FieldInfo 对象,表示由指定的字段 handle, ,由指定的泛型类型 declaringType。
//
// 异常:
// T:System.ArgumentException:
// handle 无效。 - 或 - declaringType 与 handle 不兼容。 例如, declaringType 是泛型类型定义的运行时类型句柄和
// handle 来自构造的类型。 请参阅“备注”。
[ComVisible(false)]
public static FieldInfo GetFieldFromHandle(RuntimeFieldHandle handle, RuntimeTypeHandle declaringType);
//
// 摘要:
// 获取 System.Reflection.FieldInfo 指定句柄表示的字段。
//
// 参数:
// handle:
// 一个 System.RuntimeFieldHandle 结构,其中包含内部元数据字段的表示形式的句柄。
//
// 返回结果:
// 一个 System.Reflection.FieldInfo 对象,表示由指定的字段 handle。
//
// 异常:
// T:System.ArgumentException:
// handle 无效。
public static FieldInfo GetFieldFromHandle(RuntimeFieldHandle handle);
//
// 摘要:
// 返回一个值,该值指示此实例是否与指定的对象相等。
//
// 参数:
// obj:
// 与此实例进行比较的对象,或为 null。
//
// 返回结果:
// 如果 true 等于此实例的类型和值,则为 obj;否则为 false。
public override bool Equals(object obj);
//
// 摘要:
// 返回此实例的哈希代码。
//
// 返回结果:
// 32 位有符号整数哈希代码。
public override int GetHashCode();
//
// 摘要:
// 获取一个类型数组,这些类型标识字段的可选自定义修饰符。
//
// 返回结果:
// System.Type 对象的数组,这些对象标识当前字段的可选自定义修饰符(例如 System.Runtime.CompilerServices.IsConst)。
public virtual Type[] GetOptionalCustomModifiers();
//
// 摘要:
// 由编译器返回与字段关联的文本值。
//
// 返回结果:
// 一个 System.Object,它包含与此字段关联的文本值。 如果文本值是一个元素值为零的类类型,则返回值为 null。
//
// 异常:
// T:System.InvalidOperationException:
// 非托管元数据中的常数表不包含当前字段的常数值。
//
// T:System.FormatException:
// 值的类型不是公共语言规范 (CLS) 许可的类型。 请参阅 ECMA 第 II 部分规范,元数据逻辑格式:其他结构、签名中使用的元素类型。
//
// T:System.NotSupportedException:
// 未设置该字段的常数值。
public virtual object GetRawConstantValue();
//
// 摘要:
// 获取一个类型数组,这些类型标识属性所需的自定义修饰符。
//
// 返回结果:
// System.Type 对象的数组,这些对象标识当前属性所必需的自定义修饰符(例如 System.Runtime.CompilerServices.IsConst
// 或 System.Runtime.CompilerServices.IsImplicitlyDereferenced)。
public virtual Type[] GetRequiredCustomModifiers();
//
// 摘要:
// 当在派生类中重写时,返回给定对象支持的字段的值。
//
// 参数:
// obj:
// 将返回其字段值的对象。
//
// 返回结果:
// 一个对象,包含此实例反映的字段的值。
//
// 异常:
// T:System.Reflection.TargetException:
// 在适用于 Windows 应用商店应用的 .NET 或可移植类库中,改为捕获 System.Exception。 该字段是非静态的,并且 obj 是 null。
//
// T:System.NotSupportedException:
// 字段被标记为文本,但该字段不具有一个可被接受的文本类型。
//
// T:System.FieldAccessException:
// 在适用于 Windows 应用商店应用的 .NET 或可移植类库中,改为捕获基类异常 System.MemberAccessException。 调用方没有权限来访问此字段。
//
// T:System.ArgumentException:
// 该方法既不由 obj 的类声明也不由其继承。
public abstract object GetValue(object obj);
//
// 摘要:
// 返回给定对象所支持的字段的值。
//
// 参数:
// obj:
// 一个 System.TypedReference 封装到位置,并可能存储在该位置的类型的运行时表示托管的指针的结构。
//
// 返回结果:
// Object 包含字段值。
//
// 异常:
// T:System.NotSupportedException:
// 调用方需要公共语言规范 (CLS) 的替代项,但改为调用此方法。
[CLSCompliant(false)]
public virtual object GetValueDirect(TypedReference obj);
//
// 摘要:
// 设置给定对象支持的字段的值。
//
// 参数:
// obj:
// 将设置其字段值的对象。
//
// value:
// 要分配给字段的值。
//
// 异常:
// T:System.FieldAccessException:
// 在适用于 Windows 应用商店应用的 .NET 或可移植类库中,改为捕获基类异常 System.MemberAccessException。 调用方没有权限来访问此字段。
//
// T:System.Reflection.TargetException:
// 在适用于 Windows 应用商店应用的 .NET 或可移植类库中,改为捕获 System.Exception。 obj 参数是 null 且该字段为实例字段。
//
// T:System.ArgumentException:
// 对象上不存在该字段。 - 或 - value 参数不能转换且不能存储在字段中。
[DebuggerHidden]
[DebuggerStepThrough]
public void SetValue(object obj, object value);
//
// 摘要:
// 当在派生类中重写设置支持给定的对象的字段的值。
//
// 参数:
// obj:
// 将设置其字段值的对象。
//
// value:
// 要分配给字段的值。
//
// invokeAttr:
// 一个字段 Binder ,它指定所需绑定的类型 (例如, Binder.CreateInstance 或 Binder.ExactBinding)。
//
// binder:
// 启用绑定、 强制参数类型和成员通过反射调用的属性集。 如果 binder 是 null, ,然后 Binder.DefaultBinding 使用。
//
// culture:
// 特定区域性的软件首选项。
//
// 异常:
// T:System.FieldAccessException:
// 调用方没有权限来访问此字段。
//
// T:System.Reflection.TargetException:
// obj 参数是 null 并且此字段为某一实例字段。
//
// T:System.ArgumentException:
// 对象上不存在该字段。 - 或 - value 参数不能进行转换并储存在字段中。
public abstract void SetValue(object obj, object value, BindingFlags invokeAttr, Binder binder, CultureInfo culture);
//
// 摘要:
// 设置给定对象支持的字段的值。
//
// 参数:
// obj:
// 一个 System.TypedReference 结构,该结构封装指向某位置的托管指针以及该位置可存储的类型的运行时表示形式。
//
// value:
// 要分配给字段的值。
//
// 异常:
// T:System.NotSupportedException:
// 调用方需要公共语言规范 (CLS) 的替代项,但改为调用此方法。
[CLSCompliant(false)]
public virtual void SetValueDirect(TypedReference obj, object value);
//
// 摘要:
// 指示两个 System.Reflection.FieldInfo 对象是否相等。
//
// 参数:
// left:
// 要比较的第一个对象。
//
// right:
// 要比较的第二个对象。
//
// 返回结果:
// 如果 true 等于 left,则为 right;否则为 false。
public static bool operator ==(FieldInfo left, FieldInfo right);
//
// 摘要:
// 指示两个 System.Reflection.FieldInfo 对象是否不相等。
//
// 参数:
// left:
// 要比较的第一个对象。
//
// right:
// 要比较的第二个对象。
//
// 返回结果:
// 如果 true 不等于 left,则为 right;否则为 false。
public static bool operator !=(FieldInfo left, FieldInfo right);
}
}
2、
原文地址:https://www.cnblogs.com/storebook/p/12676930.html
时间: 2024-10-11 06:37:45