次の方法で共有


FieldInfo クラス

フィールドの属性を取得し、フィールドのメタデータにアクセスできるようにします。

この型のすべてのメンバの一覧については、FieldInfo メンバ を参照してください。

System.Object
   System.Reflection.MemberInfo
      System.Reflection.FieldInfo
         System.Reflection.Emit.FieldBuilder

<Serializable>
<ClassInterface(ClassInterfaceType.AutoDual)>
MustInherit Public Class FieldInfo   Inherits MemberInfo
[C#]
[Serializable]
[ClassInterface(ClassInterfaceType.AutoDual)]
public abstract class FieldInfo : MemberInfo
[C++]
[Serializable]
[ClassInterface(ClassInterfaceType::AutoDual)]
public __gc __abstract class FieldInfo : public MemberInfo
[JScript]
public
   Serializable
 ClassInterface(ClassInterfaceType.AutoDual)
abstract class FieldInfo extends MemberInfo

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

フィールド情報はメタデータから取得します。 FieldInfo にはパブリック コンストラクタはありません。 FieldInfo オブジェクトは、Type オブジェクトの GetFields メソッドまたは GetField メソッドを呼び出すことによって取得します。

フィールドとは、クラスで定義される変数です。 FieldInfo によって、クラス内のフィールドのメタデータにアクセスでき、フィールドの機能を動的に設定または取得できます。オブジェクトで invoke メソッドや get メソッドが呼び出されるまで、クラスはメモリに読み込まれません。

継承時の注意: FieldInfo から継承する場合、 GetValue および SetValue の両メンバをオーバーライドする必要があります。

使用例

[Visual Basic, C#, C++] Type.GetFields を使用して FieldInfoClass からフィールド関連の情報を取得し、フィールドの属性情報を表示する例を次に示します。

 
Imports System
Imports System.Reflection
Imports Microsoft.VisualBasic

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

[C#] 
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);
        }
    }
}

[C++] 
#using <mscorlib.dll>

using namespace System;
using namespace System::Reflection;

public __gc class FieldInfoClass
{
public:
   int myField1;
protected:
   String* myField2;
};

int main() 
{
   FieldInfo* myFieldInfo[];
   Type* myType = __typeof(FieldInfoClass);
   // Get the type and fields of FieldInfoClass.
   myFieldInfo = myType->GetFields(static_cast<BindingFlags>(BindingFlags::NonPublic | BindingFlags::Instance
      | BindingFlags::Public));
   Console::WriteLine(S"\nThe fields of FieldInfoClass are \n");
   // Display the field information of FieldInfoClass.
   for (int i = 0; i < myFieldInfo->Length; i++) {
      Console::WriteLine(S"\nName            : {0}", myFieldInfo[i]->Name);
      Console::WriteLine(S"Declaring Type  : {0}", myFieldInfo[i]->DeclaringType);
      Console::WriteLine(S"IsPublic        : {0}", __box(myFieldInfo[i]->IsPublic));
      Console::WriteLine(S"MemberType      : {0}", __box(myFieldInfo[i]->MemberType));
      Console::WriteLine(S"FieldType       : {0}", myFieldInfo[i]->FieldType);
      Console::WriteLine(S"IsFamily        : {0}", __box(myFieldInfo[i]->IsFamily));
   }
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Reflection

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

アセンブリ: Mscorlib (Mscorlib.dll 内)

参照

FieldInfo メンバ | System.Reflection 名前空間 | Type