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 内)