Type.GetField Metoda

Definicja

Pobiera określone pole bieżącego Typeelementu .

Przeciążenia

GetField(String)

Wyszukuje pole publiczne o określonej nazwie.

GetField(String, BindingFlags)

Wyszukuje określone pole przy użyciu określonych ograniczeń powiązania.

GetField(String)

Źródło:
Type.cs
Źródło:
Type.cs
Źródło:
Type.cs

Wyszukuje pole publiczne o określonej nazwie.

C#
public System.Reflection.FieldInfo? GetField (string name);
C#
public System.Reflection.FieldInfo GetField (string name);

Parametry

name
String

Ciąg zawierający nazwę pola danych do pobrania.

Zwraca

Obiekt reprezentujący pole publiczne o określonej nazwie, jeśli zostanie znaleziony; w przeciwnym razie , null.

Implementuje

Wyjątki

name to null.

Ten Type obiekt jest TypeBuilder , którego CreateType() metoda nie została jeszcze wywołana.

Przykłady

Poniższy przykład pobiera Type obiekt dla określonej klasy, uzyskuje FieldInfo obiekt dla pola i wyświetla wartość pola.

C#

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));
    }
}

Uwagi

W wyszukiwaniu name jest uwzględniana wielkość liter. Wyszukiwanie zawiera pola publicznego wystąpienia statycznego i publicznego.

Jeśli bieżący Type reprezentuje skonstruowany typ ogólny, ta metoda zwraca FieldInfo parametry typu zastąpione przez odpowiednie argumenty typu.

Jeśli bieżący Type reprezentuje parametr typu w definicji typu ogólnego lub metody ogólnej, ta metoda przeszukuje pola ograniczenia klasy.

Zobacz też

Dotyczy

.NET 9 i inne wersje
Produkt Wersje
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

GetField(String, BindingFlags)

Źródło:
Type.cs
Źródło:
Type.cs
Źródło:
Type.cs

Wyszukuje określone pole przy użyciu określonych ograniczeń powiązania.

C#
public abstract System.Reflection.FieldInfo? GetField (string name, System.Reflection.BindingFlags bindingAttr);
C#
public abstract System.Reflection.FieldInfo GetField (string name, System.Reflection.BindingFlags bindingAttr);

Parametry

name
String

Ciąg zawierający nazwę pola danych do pobrania.

bindingAttr
BindingFlags

Bitowa kombinacja wartości wyliczenia, które określają sposób przeprowadzania wyszukiwania.

-lub-

Default , aby zwrócić wartość null.

Zwraca

Obiekt reprezentujący pole zgodne z określonymi wymaganiami, jeśli zostanie znaleziony; w przeciwnym razie , null.

Implementuje

Wyjątki

name to null.

Przykłady

Poniższy przykład pobiera Type obiekt dla określonej klasy, uzyskuje FieldInfo obiekt dla pola zgodnego z określonymi flagami powiązania i wyświetla wartość pola.

C#

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));
    }
}

Uwagi

W poniższej tabeli przedstawiono, które elementy członkowskie klasy bazowej są zwracane przez Get metody podczas odzwierciedlania typu.

Typ elementu członkowskiego Static Niestatyczna
Konstruktor Nie Nie
Pole Nie Tak. Pole jest zawsze ukryte przez nazwę i podpis.
Zdarzenie Nie dotyczy Zasadą systemu typu jest to, że dziedziczenie jest takie samo, jak w przypadku metod, które implementują właściwość. Odbicie traktuje właściwości jako ukryte przez nazwę i podpis. Patrz Uwaga 2 poniżej.
Metoda Nie Tak. Metodą (zarówno wirtualną, jak i niewirtualną) może być ukrycie przez nazwę lub przez nazwę i podpis.
Typu zagnieżdżony Nie Nie
Właściwość Nie dotyczy Zasadą systemu typu jest to, że dziedziczenie jest takie samo, jak w przypadku metod, które implementują właściwość. Odbicie traktuje właściwości jako ukryte przez nazwę i podpis. Patrz Uwaga 2 poniżej.
  1. Ukrycie przez nazwę i podpis dotyczy wszystkich części podpisu, w tym modyfikatorów niestandardowych, zwraca typy, typy parametrów, wartowników i niezarządzane konwencje wywoływania. To jest porównanie binarne.

  2. W celu odbicia właściwości i zdarzenia są ukrywane przez nazwę i podpis. Jeśli istnieje właściwość z akcesorem pobierania i ustawiania w klasie bazowej, ale odziedziczona klasa ma tylko akcesor pobierania, właściwość klasy odziedziczonej ukrywa właściwości klasy bazowej, a nie można uzyskać dostępu do metody ustawiającej w klasie bazowej.

  3. Atrybuty niestandardowe nie są częścią wspólnego typu systemowego.

Następujące BindingFlags flagi filtru mogą służyć do definiowania pól do uwzględnienia w wyszukiwaniu:

  • Musisz określić wartość BindingFlags.Instance lub BindingFlags.Static , aby uzyskać zwrot.

  • Określ BindingFlags.Public , aby uwzględnić pola publiczne w wyszukiwaniu.

  • Określ BindingFlags.NonPublic , aby uwzględnić pola inne niż publiczne (czyli pola prywatne, wewnętrzne i chronione) w wyszukiwaniu.

  • Określ BindingFlags.FlattenHierarchy , aby uwzględnić public i protected statyczne elementy członkowskie w hierarchii; private statyczne elementy członkowskie w klasach dziedziczynych nie są uwzględniane.

Następujące BindingFlags flagi modyfikatora mogą służyć do zmiany sposobu działania wyszukiwania:

  • BindingFlags.IgnoreCaseaby zignorować przypadek .name

  • BindingFlags.DeclaredOnly aby wyszukać tylko pola zadeklarowane w obiekcie Type, a nie pola, które zostały po prostu odziedziczone.

Aby uzyskać więcej informacji, zobacz System.Reflection.BindingFlags.

Jeśli bieżący Type reprezentuje skonstruowany typ ogólny, ta metoda zwraca FieldInfo parametry typu zastąpione przez odpowiednie argumenty typu.

Jeśli bieżący Type reprezentuje parametr typu w definicji typu ogólnego lub metody ogólnej, ta metoda przeszukuje pola ograniczenia klasy.

Zobacz też

Dotyczy

.NET 9 i inne wersje
Produkt Wersje
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1