FieldInfo 類別

定義

探索欄位的屬性並提供欄位中繼資料的存取。

public ref class FieldInfo abstract : System::Reflection::MemberInfo
public ref class FieldInfo abstract : System::Reflection::MemberInfo, System::Runtime::InteropServices::_FieldInfo
public 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._FieldInfo
type 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 _FieldInfo
Public MustInherit Class FieldInfo
Inherits MemberInfo
Public MustInherit Class FieldInfo
Inherits MemberInfo
Implements _FieldInfo
繼承
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 提供類別內欄位之中繼資料的存取權,並提供欄位的動態集和取得功能。 在 物件上呼叫或取得之前,類別不會載入記憶體中。

給實施者的注意事項

當您繼承自 FieldInfo 時,您必須覆寫下列成員:GetValue(Object)SetValue(Object, Object, BindingFlags, Binder, CultureInfo)

建構函式

FieldInfo()

初始化 FieldInfo 類別的新執行個體。

屬性

Attributes

取得與這個欄位相關的屬性 (Attribute)。

CustomAttributes

取得包含此成員之自訂屬性的集合。

(繼承來源 MemberInfo)
DeclaringType

取得宣告這個成員的類別。

(繼承來源 MemberInfo)
FieldHandle

取得 RuntimeFieldHandle,它是欄位內部中繼資料表示的控制代碼。

FieldType

取得這個欄位物件的型別。

IsAssembly

取得值,指出 Assembly 是否描述此欄位的潛在可視性;亦即,最多只有相同組件 (Assembly) 中的其他型別可以看見該欄位,組件外部的衍生型別 (Derived Type) 則看不見它。

IsCollectible

取得指出此 MemberInfo 物件是否為可回收 AssemblyLoadContext 中保存之組件一部分的值。

(繼承來源 MemberInfo)
IsFamily

取得值,指出 Family 是否描述此欄位的可視性;亦即,您只能在其類別和衍生類別內看見該欄位。

IsFamilyAndAssembly

取得值,指出 FamANDAssem 是否描述此欄位的可視性;亦即,只有當該欄位位於相同的組件時,衍生類別才能存取它。

IsFamilyOrAssembly

取得值,指出 FamORAssem 是否描述此欄位的潛在可視性;亦即,無論該欄位位於何處,衍生類別以及相同組件中的類別都可以呼叫它。

IsInitOnly

取得值,指出欄位是否只能在建構函式主體中設定。

IsLiteral

取得值,指出數值是否在編譯時間被寫入並且無法變更。

IsNotSerialized
已淘汰.

取得值,指出這個欄位是否有 NotSerialized 屬性。

IsPinvokeImpl

取得值,指出對應的 PinvokeImpl 屬性是否在 FieldAttributes 中設定。

IsPrivate

取得值,指出欄位是否為私用的。

IsPublic

取得值,指出欄位是否為公用的。

IsSecurityCritical

取得值,這個值表示目前欄位在目前信任層級上是否為安全性關鍵或安全性安全關鍵。

IsSecuritySafeCritical

取得值,這個值表示目前欄位在目前信任層級上是否為安全性安全關鍵。

IsSecurityTransparent

取得值,這個值表示目前欄位在目前信任層級上是否為透明。

IsSpecialName

取得值,指出在 FieldAttributes 列舉值中是否設定對應的 SpecialName 屬性。

IsStatic

取得值,指出欄位是否為靜態的。

MemberType

取得 MemberTypes 值,表示這個成員為欄位。

MemberType

在衍生類別中覆寫時,取得 MemberTypes 值,指出成員類型︰方法、建構函式、事件等。

(繼承來源 MemberInfo)
MetadataToken

取得值,這個值可識別中繼資料項目。

(繼承來源 MemberInfo)
Module

取得用於定義型別的模組,該型別宣告以目前 MemberInfo 表示的成員。

(繼承來源 MemberInfo)
Name

取得目前成員的名稱。

(繼承來源 MemberInfo)
ReflectedType

取得類別物件,是用來取得這個 MemberInfo 的執行個體。

(繼承來源 MemberInfo)

方法

Equals(Object)

傳回值,這個值指出此執行個體是否與指定的物件相等。

Equals(Object)

傳回值,這個值指出此執行個體是否與指定的物件相等。

(繼承來源 MemberInfo)
GetCustomAttributes(Boolean)

在衍生類別中覆寫時,傳回套用至此成員之所有自訂屬性的陣列。

(繼承來源 MemberInfo)
GetCustomAttributes(Type, Boolean)

當在衍生的類別中覆寫時,會傳回套用至這個成員的自訂屬性陣列,並以 Type 識別。

(繼承來源 MemberInfo)
GetCustomAttributesData()

傳回 CustomAttributeData 物件的清單,表示已套用至目標成員之屬性的資料。

(繼承來源 MemberInfo)
GetFieldFromHandle(RuntimeFieldHandle)

取得指定的控制代碼所表示之欄位的 FieldInfo

GetFieldFromHandle(RuntimeFieldHandle, RuntimeTypeHandle)

針對指定的泛型型別,取得指定的控制代碼所表示之欄位的 FieldInfo

GetHashCode()

傳回這個執行個體的雜湊碼。

GetHashCode()

傳回這個執行個體的雜湊碼。

(繼承來源 MemberInfo)
GetModifiedFieldType()

取得這個欄位物件的修改類型。

GetOptionalCustomModifiers()

取得可識別欄位的選用自訂修飾詞的類型陣列。

GetRawConstantValue()

使用編譯器傳回與欄位相關聯的常值。

GetRequiredCustomModifiers()

取得類型的陣列,識別屬性的必要自訂修飾詞。

GetType()

探索類別欄位的屬性並提供欄位中繼資料的存取。

GetType()

探索成員的屬性並提供成員中繼資料的存取。

(繼承來源 MemberInfo)
GetValue(Object)

在衍生類別中覆寫時,傳回指定物件所支援欄位的值。

GetValueDirect(TypedReference)

傳回由指定物件支援的欄位值。

HasSameMetadataDefinitionAs(MemberInfo)

探索欄位的屬性並提供欄位中繼資料的存取。

(繼承來源 MemberInfo)
IsDefined(Type, Boolean)

在衍生類別中覆寫時,表示是否已有一個或多個具有指定型別或其衍生型別的屬性套用至這個成員。

(繼承來源 MemberInfo)
MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
SetValue(Object, Object)

設定指定物件所支援的欄位值。

SetValue(Object, Object, BindingFlags, Binder, CultureInfo)

當在衍生類別中覆寫時,請設定由指定物件所支援的欄位值。

SetValueDirect(TypedReference, Object)

設定指定物件所支援的欄位值。

ToString()

傳回代表目前物件的字串。

(繼承來源 Object)

運算子

Equality(FieldInfo, FieldInfo)

表示兩個 FieldInfo 物件是否相等。

Inequality(FieldInfo, FieldInfo)

表示兩個 FieldInfo 物件是否不相等。

明確介面實作

_FieldInfo.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

將一組名稱對應至一組對應的分派識別項 (Dispatch Identifier)。

_FieldInfo.GetType()

取得 Type 物件,其代表 FieldInfo 類型。

_FieldInfo.GetTypeInfo(UInt32, UInt32, IntPtr)

擷取物件的類型資訊,可以用來取得介面的類型資訊。

_FieldInfo.GetTypeInfoCount(UInt32)

擷取物件提供的類型資訊介面數目 (0 或 1)。

_FieldInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

提供物件所公開的屬性和方法的存取權。

_MemberInfo.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

將一組名稱對應至一組對應的分派識別項 (Dispatch Identifier)。

(繼承來源 MemberInfo)
_MemberInfo.GetType()

取得 Type 物件,表示 MemberInfo 類別。

(繼承來源 MemberInfo)
_MemberInfo.GetTypeInfo(UInt32, UInt32, IntPtr)

擷取物件的類型資訊,可以用來取得介面的類型資訊。

(繼承來源 MemberInfo)
_MemberInfo.GetTypeInfoCount(UInt32)

擷取物件提供的類型資訊介面數目 (0 或 1)。

(繼承來源 MemberInfo)
_MemberInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

提供物件所公開的屬性和方法的存取權。

(繼承來源 MemberInfo)
ICustomAttributeProvider.GetCustomAttributes(Boolean)

傳回這個成員中定義的所有自訂屬性的陣列 (但具名屬性除外),如果沒有自訂屬性,則傳回空陣列。

(繼承來源 MemberInfo)
ICustomAttributeProvider.GetCustomAttributes(Type, Boolean)

傳回這個成員中定義的自訂屬性陣列 (依類型識別),如果沒有該類型的自訂屬性,則傳回空陣列。

(繼承來源 MemberInfo)
ICustomAttributeProvider.IsDefined(Type, Boolean)

指出此成員上是否有定義一個或多個 attributeType 執行個體。

(繼承來源 MemberInfo)

擴充方法

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)

傳回值,指出所指定成員是否有可用的中繼資料語彙基元。

適用於

執行緒安全性

此型別具備執行緒安全。

另請參閱