Type.GetField Type.GetField Type.GetField Type.GetField Method

定義

現在の Type の特定のフィールドを取得します。Gets a specific field of the current Type.

オーバーロード

GetField(String) GetField(String) GetField(String) GetField(String)

指定した名前のパブリック フィールドを検索します。Searches for the public field with the specified name.

GetField(String, BindingFlags) GetField(String, BindingFlags) GetField(String, BindingFlags) GetField(String, BindingFlags)

指定したバインディング制約を使用して、指定したフィールドを検索します。Searches for the specified field, using the specified binding constraints.

GetField(String) GetField(String) GetField(String) GetField(String)

指定した名前のパブリック フィールドを検索します。Searches for the public field with the specified name.

public:
 virtual System::Reflection::FieldInfo ^ GetField(System::String ^ name);
public System.Reflection.FieldInfo GetField (string name);
abstract member GetField : string -> System.Reflection.FieldInfo
override this.GetField : string -> System.Reflection.FieldInfo
Public Function GetField (name As String) As FieldInfo

パラメーター

name
String String String String

取得するデータ フィールドの名前を格納している文字列。The string containing the name of the data field to get.

戻り値

指定した名前のパブリック フィールドが存在する場合は、そのフィールドを表すオブジェクト。それ以外の場合は nullAn object representing the public field with the specified name, if found; otherwise, null.

実装

例外

この Type オブジェクトは、CreateType() メソッドがまだ呼び出されていない TypeBuilder です。This Type object is a TypeBuilder whose CreateType() method has not yet been called.

次の例では、取得、Type指定したクラスのオブジェクトを取得、FieldInfoフィールドに、オブジェクト フィールドの値を表示します。The following example gets the Type object for the specified class, obtains the FieldInfo object for the field, and displays the value of the field.

using namespace System;
using namespace System::Reflection;
using namespace System::Security;
public ref class MyFieldClassA
{
public:
   String^ field;
   MyFieldClassA()
   {
      field = "A Field";
   }


   property String^ Field 
   {
      String^ get()
      {
         return field;
      }

      void set( String^ value )
      {
         if ( field != value )
         {
            field = value;
         }
      }

   }

};

public ref class MyFieldClassB
{
public:
   String^ field;
   MyFieldClassB()
   {
      field = "B Field";
   }


   property String^ Field 
   {
      String^ get()
      {
         return field;
      }

      void set( String^ value )
      {
         if ( field != value )
         {
            field = value;
         }
      }

   }

};

int main()
{
   try
   {
      MyFieldClassB^ myFieldObjectB = gcnew MyFieldClassB;
      MyFieldClassA^ myFieldObjectA = gcnew MyFieldClassA;
      Type^ myTypeA = Type::GetType( "MyFieldClassA" );
      FieldInfo^ myFieldInfo = myTypeA->GetField( "field" );
      Type^ myTypeB = Type::GetType( "MyFieldClassB" );
      FieldInfo^ myFieldInfo1 = myTypeB->GetField( "field", static_cast<BindingFlags>(BindingFlags::Public | BindingFlags::Instance) );
      Console::WriteLine( "The value of the field is : {0} ", myFieldInfo->GetValue( myFieldObjectA ) );
      Console::WriteLine( "The value of the field is : {0} ", myFieldInfo1->GetValue( myFieldObjectB ) );
   }
   catch ( SecurityException^ e ) 
   {
      Console::WriteLine( "Exception Raised!" );
      Console::WriteLine( "Message : {0}", e->Message );
   }
   catch ( ArgumentNullException^ e ) 
   {
      Console::WriteLine( "Exception Raised!" );
      Console::WriteLine( "Message : {0}", e->Message );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "Exception Raised!" );
      Console::WriteLine( "Message : {0}", e->Message );
   }

}


using System;
using System.Reflection;

public class MyFieldClassA
{
    public string Field = "A Field";
}

public class MyFieldClassB
{
    private string field = "B Field";
    public string Field 
    {
        get
        {
            return field;
        }
        set
        {
            if (field!=value)
            {
                field=value;
            }
        }
    }
}

public class MyFieldInfoClass
{
    public static void Main()
    {
        MyFieldClassB myFieldObjectB = new MyFieldClassB();
        MyFieldClassA myFieldObjectA = new MyFieldClassA();

        Type myTypeA = typeof(MyFieldClassA);
        FieldInfo myFieldInfo = myTypeA.GetField("Field");

        Type myTypeB = typeof(MyFieldClassB);
        FieldInfo myFieldInfo1 = myTypeB.GetField("field", 
            BindingFlags.NonPublic | BindingFlags.Instance);

        Console.WriteLine("The value of the public field is: '{0}'", 
            myFieldInfo.GetValue(myFieldObjectA));
        Console.WriteLine("The value of the private field is: '{0}'", 
            myFieldInfo1.GetValue(myFieldObjectB));
    }
}

Imports System
Imports System.Reflection
Imports Microsoft.VisualBasic

Public Class MyFieldClassA
    Public Field As String = "A Field"
End Class 'MyFieldClassA

Public Class MyFieldClassB
    Private myField As String = "B Field"

    Public Property Field() As String
        Get
            Return myField
        End Get
        Set(ByVal Value As String)
            If myField <> value Then
                myField = value
            End If
        End Set
    End Property
End Class 'MyFieldClassB


Public Class MyFieldInfoClass

    Public Shared Sub Main()
        Dim myFieldObjectB As New MyFieldClassB()
        Dim myFieldObjectA As New MyFieldClassA()

        Dim myTypeA As Type = GetType(MyFieldClassA)
        Dim myFieldInfo As FieldInfo = myTypeA.GetField("Field")

        Dim myTypeB As Type = GetType(MyFieldClassB)
        Dim myFieldInfo1 As FieldInfo = myTypeB.GetField("myField", _
            BindingFlags.NonPublic Or BindingFlags.Instance)

        Console.WriteLine("The value of the public field is: '{0}'", _
            myFieldInfo.GetValue(myFieldObjectA))
        Console.WriteLine("The value of the private field is: '{0}'", _
            myFieldInfo1.GetValue(myFieldObjectB))
    End Sub 'Main

End Class 'MyFieldInfoClass

注釈

検索name小文字が区別されます。The search for name is case-sensitive. 検索には、static および public のパブリック インスタンス フィールドが含まれています。The search includes public static and public instance fields.

場合、現在Typeこのメソッドが戻る構築されたジェネリック型を表す、FieldInfo適切な型引数に置き換え、型パラメーター。If the current Type represents a constructed generic type, this method returns the FieldInfo with the type parameters replaced by the appropriate type arguments.

場合、現在Type型パラメーターを表すジェネリック型またはジェネリック メソッドの定義では、このメソッドは、クラス制約のフィールドを検索します。If the current Type represents a type parameter in the definition of a generic type or generic method, this method searches the fields of the class constraint.

こちらもご覧ください

GetField(String, BindingFlags) GetField(String, BindingFlags) GetField(String, BindingFlags) GetField(String, BindingFlags)

指定したバインディング制約を使用して、指定したフィールドを検索します。Searches for the specified field, using the specified binding constraints.

public:
 abstract System::Reflection::FieldInfo ^ GetField(System::String ^ name, System::Reflection::BindingFlags bindingAttr);
public abstract System.Reflection.FieldInfo GetField (string name, System.Reflection.BindingFlags bindingAttr);
abstract member GetField : string * System.Reflection.BindingFlags -> System.Reflection.FieldInfo
Public MustOverride Function GetField (name As String, bindingAttr As BindingFlags) As FieldInfo

パラメーター

name
String String String String

取得するデータ フィールドの名前を格納している文字列。The string containing the name of the data field to get.

bindingAttr
BindingFlags BindingFlags BindingFlags BindingFlags

検索を実施する方法を指定する列挙値のビットごとの組み合わせ。A bitwise combination of the enumeration values that specify how the search is conducted.

または-or- null を返す場合は DefaultDefault to return null.

戻り値

指定した要件と一致するフィールドが存在する場合は、そのフィールドを表すオブジェクト。それ以外の場合は nullAn object representing the field that matches the specified requirements, if found; otherwise, null.

実装

例外

次の例では、取得、Type指定したクラスのオブジェクトを取得、FieldInfoオブジェクト フィールドの指定したバインディング フラグと一致して、フィールドの値を表示します。The following example gets the Type object for the specified class, obtains the FieldInfo object for the field that matches the specified binding flags, and displays the value of the field.

using namespace System;
using namespace System::Reflection;
using namespace System::Security;
public ref class MyFieldClassA
{
public:
   String^ field;
   MyFieldClassA()
   {
      field = "A Field";
   }


   property String^ Field 
   {
      String^ get()
      {
         return field;
      }

      void set( String^ value )
      {
         if ( field != value )
         {
            field = value;
         }
      }

   }

};

public ref class MyFieldClassB
{
public:
   String^ field;
   MyFieldClassB()
   {
      field = "B Field";
   }


   property String^ Field 
   {
      String^ get()
      {
         return field;
      }

      void set( String^ value )
      {
         if ( field != value )
         {
            field = value;
         }
      }

   }

};

int main()
{
   try
   {
      MyFieldClassB^ myFieldObjectB = gcnew MyFieldClassB;
      MyFieldClassA^ myFieldObjectA = gcnew MyFieldClassA;
      Type^ myTypeA = Type::GetType( "MyFieldClassA" );
      FieldInfo^ myFieldInfo = myTypeA->GetField( "field" );
      Type^ myTypeB = Type::GetType( "MyFieldClassB" );
      FieldInfo^ myFieldInfo1 = myTypeB->GetField( "field", static_cast<BindingFlags>(BindingFlags::Public | BindingFlags::Instance) );
      Console::WriteLine( "The value of the field is : {0} ", myFieldInfo->GetValue( myFieldObjectA ) );
      Console::WriteLine( "The value of the field is : {0} ", myFieldInfo1->GetValue( myFieldObjectB ) );
   }
   catch ( SecurityException^ e ) 
   {
      Console::WriteLine( "Exception Raised!" );
      Console::WriteLine( "Message : {0}", e->Message );
   }
   catch ( ArgumentNullException^ e ) 
   {
      Console::WriteLine( "Exception Raised!" );
      Console::WriteLine( "Message : {0}", e->Message );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "Exception Raised!" );
      Console::WriteLine( "Message : {0}", e->Message );
   }

}


using System;
using System.Reflection;

public class MyFieldClassA
{
    public string Field = "A Field";
}

public class MyFieldClassB
{
    private string field = "B Field";
    public string Field 
    {
        get
        {
            return field;
        }
        set
        {
            if (field!=value)
            {
                field=value;
            }
        }
    }
}

public class MyFieldInfoClass
{
    public static void Main()
    {
        MyFieldClassB myFieldObjectB = new MyFieldClassB();
        MyFieldClassA myFieldObjectA = new MyFieldClassA();

        Type myTypeA = typeof(MyFieldClassA);
        FieldInfo myFieldInfo = myTypeA.GetField("Field");

        Type myTypeB = typeof(MyFieldClassB);
        FieldInfo myFieldInfo1 = myTypeB.GetField("field", 
            BindingFlags.NonPublic | BindingFlags.Instance);

        Console.WriteLine("The value of the public field is: '{0}'", 
            myFieldInfo.GetValue(myFieldObjectA));
        Console.WriteLine("The value of the private field is: '{0}'", 
            myFieldInfo1.GetValue(myFieldObjectB));
    }
}

Imports System
Imports System.Reflection
Imports Microsoft.VisualBasic

Public Class MyFieldClassA
    Public Field As String = "A Field"
End Class 'MyFieldClassA

Public Class MyFieldClassB
    Private myField As String = "B Field"

    Public Property Field() As String
        Get
            Return myField
        End Get
        Set(ByVal Value As String)
            If myField <> value Then
                myField = value
            End If
        End Set
    End Property
End Class 'MyFieldClassB


Public Class MyFieldInfoClass

    Public Shared Sub Main()
        Dim myFieldObjectB As New MyFieldClassB()
        Dim myFieldObjectA As New MyFieldClassA()

        Dim myTypeA As Type = GetType(MyFieldClassA)
        Dim myFieldInfo As FieldInfo = myTypeA.GetField("Field")

        Dim myTypeB As Type = GetType(MyFieldClassB)
        Dim myFieldInfo1 As FieldInfo = myTypeB.GetField("myField", _
            BindingFlags.NonPublic Or BindingFlags.Instance)

        Console.WriteLine("The value of the public field is: '{0}'", _
            myFieldInfo.GetValue(myFieldObjectA))
        Console.WriteLine("The value of the private field is: '{0}'", _
            myFieldInfo1.GetValue(myFieldObjectB))
    End Sub 'Main

End Class 'MyFieldInfoClass

注釈

次の表は、基底クラスのメンバーがによって返される、Getメソッドの型でリフレクション時にします。The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

メンバーの型Member Type スタティックStatic 非静的Non-Static
コンストラクターConstructor いいえNo いいえNo
フィールドField いいえNo はい。Yes. フィールドは、常に、名前とシグネチャによる非表示です。A field is always hide-by-name-and-signature.
eventEvent 利用不可Not applicable 共通型システムの規則は、継承は、メソッド、プロパティを実装するのと同じです。The common type system rule is that the inheritance is the same as that of the methods that implement the property. プロパティは、リフレクションは、名前とシグネチャで隠ぺいとして扱います。Reflection treats properties as hide-by-name-and-signature. 下記のメモ 2 を参照してください。See note 2 below.
メソッドMethod いいえNo はい。Yes. (仮想および非仮想) メソッドには、名前によって隠ぺいまたは名前とシグネチャによる非表示を指定できます。A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
入れ子にされた型Nested Type いいえNo いいえNo
プロパティProperty 利用不可Not applicable 共通型システムの規則は、継承は、メソッド、プロパティを実装するのと同じです。The common type system rule is that the inheritance is the same as that of the methods that implement the property. プロパティは、リフレクションは、名前とシグネチャで隠ぺいとして扱います。Reflection treats properties as hide-by-name-and-signature. 下記のメモ 2 を参照してください。See note 2 below.
  1. 名前とシグネチャによる非表示にするは、すべてのパーツのカスタム修飾子を含む、シグネチャの戻り値の型、パラメーターの型、sentinel、アンマネージ呼び出し規約と見なします。Hide-by-name-and-signature considers all of the parts of the signature, including custom modifiers, return types, parameter types, sentinels, and unmanaged calling conventions. これは、バイナリ比較です。This is a binary comparison.

  2. リフレクション プロパティおよびイベントは、名前とシグネチャによる非表示にするは。For reflection, properties and events are hide-by-name-and-signature. 派生クラスには get アクセサーのみ、基本クラスに、get と set アクセサーの両方を持つプロパティがある場合は、派生クラスのプロパティには、基底クラスのプロパティが非表示にし、基本クラスの set アクセス操作子にアクセスすることはできません。If you have a property with both a get and a set accessor in the base class, but the derived class has only a get accessor, the derived class property hides the base class property, and you will not be able to access the setter on the base class.

  3. カスタム属性は、共通型システムの一部ではありません。Custom attributes are not part of the common type system.

BindingFlagsフィルター フラグは、検索に含めるフィールドを定義するために使用できます。The following BindingFlags filter flags can be used to define which fields to include in the search:

  • いずれかを指定する必要がありますBindingFlags.InstanceまたはBindingFlags.Static戻り値を取得するためにします。You must specify either BindingFlags.Instance or BindingFlags.Static in order to get a return.

  • 指定BindingFlags.Publicパブリック フィールドを検索します。Specify BindingFlags.Public to include public fields in the search.

  • 指定BindingFlags.NonPublic検索にパブリックでないフィールド (つまり、プライベート、内部、および保護されているフィールド) を含める。Specify BindingFlags.NonPublic to include non-public fields (that is, private, internal, and protected fields) in the search.

  • 指定BindingFlags.FlattenHierarchyに含めるpublicprotected階層; の静的メンバーprivate継承クラスの静的メンバーは含まれません。Specify BindingFlags.FlattenHierarchy to include public and protected static members up the hierarchy; private static members in inherited classes are not included.

BindingFlags修飾フラグは、検索の動作を変更するために使用できます。The following BindingFlags modifier flags can be used to change how the search works:

  • BindingFlags.IgnoreCase 大文字と小文字を無視するnameします。BindingFlags.IgnoreCase to ignore the case of name.

  • BindingFlags.DeclaredOnly 宣言されているフィールドのみを検索する、Typeは継承されたフィールド。BindingFlags.DeclaredOnly to search only the fields declared on the Type, not fields that were simply inherited.

詳細については、「System.Reflection.BindingFlags」を参照してください。See System.Reflection.BindingFlags for more information.

場合、現在Typeこのメソッドが戻る構築されたジェネリック型を表す、FieldInfo適切な型引数に置き換え、型パラメーター。If the current Type represents a constructed generic type, this method returns the FieldInfo with the type parameters replaced by the appropriate type arguments.

場合、現在Type型パラメーターを表すジェネリック型またはジェネリック メソッドの定義では、このメソッドは、クラス制約のフィールドを検索します。If the current Type represents a type parameter in the definition of a generic type or generic method, this method searches the fields of the class constraint.

こちらもご覧ください

適用対象