FieldInfo 类 
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
发现字段的属性并提供对字段元数据的访问权限。
public ref class FieldInfo abstract : System::Reflection::MemberInfopublic ref class FieldInfo abstract : System::Reflection::MemberInfo, System::Runtime::InteropServices::_FieldInfopublic abstract class FieldInfo : System.Reflection.MemberInfo[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Serializable]
public abstract class FieldInfo : System.Reflection.MemberInfo, System.Runtime.InteropServices._FieldInfo[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class FieldInfo : System.Reflection.MemberInfo, System.Runtime.InteropServices._FieldInfotype FieldInfo = class
    inherit MemberInfo[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Serializable>]
type FieldInfo = class
    inherit MemberInfo
    interface _FieldInfo[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type FieldInfo = class
    inherit MemberInfo
    interface _FieldInfoPublic MustInherit Class FieldInfo
Inherits MemberInfoPublic MustInherit Class FieldInfo
Inherits MemberInfo
Implements _FieldInfo- 继承
- 派生
- 属性
- 实现
示例
以下示例使用 Type.GetFields 方法从 FieldInfo 类获取字段相关信息,然后显示字段属性。
using namespace System;
using namespace System::Reflection;
public ref class FieldInfoClass
{
public:
   int myField1;
protected:
   String^ myField2;
};
int main()
{
   array<FieldInfo^>^myFieldInfo;
   Type^ myType = FieldInfoClass::typeid;
   // Get the type and fields of FieldInfoClass.
   myFieldInfo = myType->GetFields( static_cast<BindingFlags>(BindingFlags::NonPublic | BindingFlags::Instance | BindingFlags::Public) );
   Console::WriteLine( "\nThe fields of FieldInfoClass are \n" );
   // Display the field information of FieldInfoClass.
   for ( int i = 0; i < myFieldInfo->Length; i++ )
   {
      Console::WriteLine( "\nName            : {0}", myFieldInfo[ i ]->Name );
      Console::WriteLine( "Declaring Type  : {0}", myFieldInfo[ i ]->DeclaringType );
      Console::WriteLine( "IsPublic        : {0}", myFieldInfo[ i ]->IsPublic );
      Console::WriteLine( "MemberType      : {0}", myFieldInfo[ i ]->MemberType );
      Console::WriteLine( "FieldType       : {0}", myFieldInfo[ i ]->FieldType );
      Console::WriteLine( "IsFamily        : {0}", myFieldInfo[ i ]->IsFamily );
   }
}
using System;
using System.Reflection;
public class FieldInfoClass
{
    public int myField1 = 0;
    protected string myField2 = null;
    public static void Main()
    {
        FieldInfo[] myFieldInfo;
        Type myType = typeof(FieldInfoClass);
        // Get the type and fields of FieldInfoClass.
        myFieldInfo = myType.GetFields(BindingFlags.NonPublic | BindingFlags.Instance
            | BindingFlags.Public);
        Console.WriteLine("\nThe fields of " +
            "FieldInfoClass are \n");
        // Display the field information of FieldInfoClass.
        for(int i = 0; i < myFieldInfo.Length; i++)
        {
            Console.WriteLine("\nName            : {0}", myFieldInfo[i].Name);
            Console.WriteLine("Declaring Type  : {0}", myFieldInfo[i].DeclaringType);
            Console.WriteLine("IsPublic        : {0}", myFieldInfo[i].IsPublic);
            Console.WriteLine("MemberType      : {0}", myFieldInfo[i].MemberType);
            Console.WriteLine("FieldType       : {0}", myFieldInfo[i].FieldType);
            Console.WriteLine("IsFamily        : {0}", myFieldInfo[i].IsFamily);
        }
    }
}
Imports System.Reflection
Public Class FieldInfoClass
    Public myField1 As Integer = 0
    Protected myField2 As String = Nothing
    Public Shared Sub Main()
        Dim myFieldInfo() As FieldInfo
        Dim myType As Type = GetType(FieldInfoClass)
        ' Get the type and fields of FieldInfoClass.
        myFieldInfo = myType.GetFields(BindingFlags.NonPublic Or _
                      BindingFlags.Instance Or BindingFlags.Public)
        Console.WriteLine(ControlChars.NewLine & "The fields of " & _
                      "FieldInfoClass class are " & ControlChars.NewLine)
        ' Display the field information of FieldInfoClass.
        Dim i As Integer
        For i = 0 To myFieldInfo.Length - 1
            Console.WriteLine(ControlChars.NewLine + "Name            : {0}", myFieldInfo(i).Name)
            Console.WriteLine("Declaring Type  : {0}", myFieldInfo(i).DeclaringType)
            Console.WriteLine("IsPublic        : {0}", myFieldInfo(i).IsPublic)
            Console.WriteLine("MemberType      : {0}", myFieldInfo(i).MemberType)
            Console.WriteLine("FieldType       : {0}", myFieldInfo(i).FieldType)
            Console.WriteLine("IsFamily        : {0}", myFieldInfo(i).IsFamily)
        Next i
    End Sub
End Class
注解
字段信息是从元数据获取的。 类 FieldInfo 没有公共构造函数。 
              FieldInfo 对象是通过调用 GetFields 对象的 或 GetField 方法获取的 Type 。
字段是在 类中定义的变量。 FieldInfo 提供对类中字段元数据的访问,并为字段提供动态集和获取功能。 在调用 或对 对象调用 get 之前,类不会加载到内存中。
实施者说明
当从 FieldInfo 继承时,必须重写下面的成员:GetValue(Object) 和 SetValue(Object, Object, BindingFlags, Binder, CultureInfo)。
构造函数
| FieldInfo() | 初始化  | 
属性
| Attributes | 获取与此字段关联的特性。 | 
| CustomAttributes | 获取包含此成员自定义属性的集合。(继承自 MemberInfo) | 
| DeclaringType | 获取声明该成员的类。(继承自 MemberInfo) | 
| FieldHandle | 获取  | 
| FieldType | 获取此字段对象的类型。 | 
| IsAssembly | 获取一个值,该值指示此字段的潜在可见性是否由 Assembly 描述;也就是说,此字段只对同一程序集中的其他类型可见,而对该程序集以外的派生类型则不可见。 | 
| IsCollectible | 获取一个值,该值指示此 MemberInfo 对象是否是包含在可回收的 AssemblyLoadContext 中的程序集的一部分。(继承自 MemberInfo) | 
| IsFamily | 获取一个值,该值指示此字段的可见性是否由 Family 描述;也就是说,此字段仅在其类和派生类内可见。 | 
| IsFamilyAndAssembly | 获取一个值,该值指示此字段的可见性是否由 FamANDAssem 描述;也就是说,可从派生类访问此字段,但仅当这些派生类在同一程序集中时。 | 
| IsFamilyOrAssembly | 获取一个值,该值指示此字段的潜在可见性是否由 FamORAssem 描述;也就是说,可通过派生类(无论其位置如何)和同一程序集中的类访问此字段。 | 
| IsInitOnly | 获取一个值,通过该值指示此字段是否只能在构造函数的主体中设置。 | 
| IsLiteral | 获取一个值,通过该值指示该值是否在编译时写入并且不能更改。 | 
| IsNotSerialized | 
				已过时.
			 获取一个值,通过该值指示此字段是否有  | 
| IsPinvokeImpl | 获取一个值,该值指示是否已在 FieldAttributes 中设置相应的  | 
| IsPrivate | 获取一个值,通过该值指示此字段是否为私有字段。 | 
| IsPublic | 获取一个值,通过该值指示此字段是否为公共字段。 | 
| IsSecurityCritical | 获取一个值,该值指示当前字段在当前信任级别上是安全关键的还是安全可靠关键的。 | 
| IsSecuritySafeCritical | 获取一个值,该值指示当前字段在当前信任级别上是否是安全可靠关键的。 | 
| IsSecurityTransparent | 获取一个值,该值指示当前字段在当前信任级别上是否是透明的。 | 
| IsSpecialName | 获取一个值,该值指示是否已在 FieldAttributes 枚举数中设置相应的  | 
| IsStatic | 获取一个值,通过该值指示此字段是否为静态字段。 | 
| MemberType | 获取 MemberTypes 值,该值指示此成员是字段。 | 
| MemberType | 在派生类中重写时,获取 MemberTypes 值,该值指示成员类型 - 方法、构造函数、事件等。(继承自 MemberInfo) | 
| MetadataToken | 获取一个值,该值标识元数据元素。(继承自 MemberInfo) | 
| Module | 获取一个模块,在该模块中已经定义一个类型,该类型用于声明由当前 MemberInfo 表示的成员。(继承自 MemberInfo) | 
| Name | 获取当前成员的名称。(继承自 MemberInfo) | 
| ReflectedType | 获取用于获取  | 
方法
运算符
| Equality(FieldInfo, FieldInfo) | 指示两个 FieldInfo 对象是否相等。 | 
| Inequality(FieldInfo, FieldInfo) | 指示两个 FieldInfo 对象是否不相等。 | 
显式接口实现
扩展方法
| GetCustomAttribute(MemberInfo, Type) | 检索应用于指定成员的指定类型的自定义特性。 | 
| GetCustomAttribute(MemberInfo, Type, Boolean) | 检索应用于指定成员的指定类型的自定义特性,并可选择检查该成员的上级。 | 
| GetCustomAttribute<T>(MemberInfo) | 检索应用于指定成员的指定类型的自定义特性。 | 
| GetCustomAttribute<T>(MemberInfo, Boolean) | 检索应用于指定成员的指定类型的自定义特性,并可选择检查该成员的上级。 | 
| GetCustomAttributes(MemberInfo) | 检索应用于指定成员的自定义特性集合。 | 
| GetCustomAttributes(MemberInfo, Boolean) | 检索应用于指定成员的自定义特性集合,并可选择检查该成员的上级。 | 
| GetCustomAttributes(MemberInfo, Type) | 检索应用于指定成员的指定类型的自定义特性集合。 | 
| GetCustomAttributes(MemberInfo, Type, Boolean) | 检索应用于指定成员的指定类型的自定义特性集合,并可选择检查该成员的上级。 | 
| GetCustomAttributes<T>(MemberInfo) | 检索应用于指定成员的指定类型的自定义特性集合。 | 
| GetCustomAttributes<T>(MemberInfo, Boolean) | 检索应用于指定成员的指定类型的自定义特性集合,并可选择检查该成员的上级。 | 
| IsDefined(MemberInfo, Type) | 确定是否将指定类型的任何自定义属性应用于指定的成员。 | 
| IsDefined(MemberInfo, Type, Boolean) | 指示一个指定类型的自定义特性是否应用于一个指定的数字,并选择性地应用于其的上级。 | 
| GetMetadataToken(MemberInfo) | 获取给定成员的元数据令牌(如果可用)。 | 
| HasMetadataToken(MemberInfo) | 返回表示元数据令牌是否可用于指定的成员的值。 | 
适用于
线程安全性
此类型是线程安全的。