Type.GetField Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft ein bestimmtes Feld des aktuellen Typeab.
Überlädt
| Name | Beschreibung |
|---|---|
| GetField(String) |
Sucht nach dem öffentlichen Feld mit dem angegebenen Namen. |
| GetField(String, BindingFlags) |
Sucht mithilfe der angegebenen Bindungseinschränkungen nach dem angegebenen Feld. |
GetField(String)
- Quelle:
- Type.cs
- Quelle:
- Type.cs
- Quelle:
- Type.cs
- Quelle:
- Type.cs
- Quelle:
- Type.cs
Sucht nach dem öffentlichen Feld mit dem angegebenen Namen.
public:
System::Reflection::FieldInfo ^ GetField(System::String ^ name);
public:
virtual System::Reflection::FieldInfo ^ GetField(System::String ^ name);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields)]
public System.Reflection.FieldInfo? GetField(string name);
public System.Reflection.FieldInfo GetField(string name);
public System.Reflection.FieldInfo? GetField(string name);
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields)>]
member this.GetField : string -> System.Reflection.FieldInfo
member this.GetField : string -> System.Reflection.FieldInfo
abstract member GetField : string -> System.Reflection.FieldInfo
override this.GetField : string -> System.Reflection.FieldInfo
Public Function GetField (name As String) As FieldInfo
Parameter
- name
- String
Die Zeichenfolge, die den Namen des abzurufenden Datenfelds enthält.
Gibt zurück
Ein Objekt, das das öffentliche Feld mit dem angegebenen Namen darstellt, falls gefunden; andernfalls . null
Implementiert
- Attribute
Ausnahmen
name ist null.
Dieses Type Objekt ist eine TypeBuilder Methode, deren CreateType() Methode noch nicht aufgerufen wurde.
Beispiele
Im folgenden Beispiel wird das Type Objekt für die angegebene Klasse abgerufen, das FieldInfo Objekt für das Feld abgerufen und der Wert des Felds angezeigt.
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));
}
}
open System.Reflection
type MyFieldClassA =
val public Field: string
new () = { Field = "A Field"}
type MyFieldClassB() =
let field = "B Field"
member _.Field
with get () = field
let myFieldObjectB = MyFieldClassB()
let myFieldObjectA = MyFieldClassA()
let myTypeA = typeof<MyFieldClassA>
let myFieldInfo = myTypeA.GetField "Field"
let myTypeB = typeof<MyFieldClassB>
let myFieldInfo1 = myTypeB.GetField("field", BindingFlags.NonPublic ||| BindingFlags.Instance)
printfn $"The value of the public field is: '{myFieldInfo.GetValue myFieldObjectA}'"
printfn $"The value of the private field is: '{myFieldInfo1.GetValue myFieldObjectB}'"
Imports System.Reflection
Public Class MyFieldClassA
Public Field As String = "A Field"
End Class
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
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
End Class
Hinweise
Bei der Suche nach name wird die Groß- und Kleinschreibung beachtet. Die Suche enthält öffentliche statische und öffentliche Instanzfelder.
Wenn der aktuelle Type einen konstruierten generischen Typ darstellt, gibt diese Methode den FieldInfo zurück, bei dem die Typparameter durch die entsprechenden Typargumente ersetzt sind.
Wenn der aktuelle Parameter in der Definition eines generischen Typs oder einer generischen Type Methode darstellt, durchsucht diese Methode die Felder der Klasseneinschränkung.
Weitere Informationen
Gilt für:
GetField(String, BindingFlags)
- Quelle:
- Type.cs
- Quelle:
- Type.cs
- Quelle:
- Type.cs
- Quelle:
- Type.cs
- Quelle:
- Type.cs
Sucht mithilfe der angegebenen Bindungseinschränkungen nach dem angegebenen Feld.
public:
abstract System::Reflection::FieldInfo ^ GetField(System::String ^ name, System::Reflection::BindingFlags bindingAttr);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields)]
public abstract System.Reflection.FieldInfo? GetField(string name, System.Reflection.BindingFlags bindingAttr);
public abstract System.Reflection.FieldInfo GetField(string name, System.Reflection.BindingFlags bindingAttr);
public abstract System.Reflection.FieldInfo? GetField(string name, System.Reflection.BindingFlags bindingAttr);
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields)>]
abstract member GetField : string * System.Reflection.BindingFlags -> System.Reflection.FieldInfo
abstract member GetField : string * System.Reflection.BindingFlags -> System.Reflection.FieldInfo
Public MustOverride Function GetField (name As String, bindingAttr As BindingFlags) As FieldInfo
Parameter
- name
- String
Die Zeichenfolge, die den Namen des abzurufenden Datenfelds enthält.
- bindingAttr
- BindingFlags
Eine bitweise Kombination der Enumerationswerte, die angeben, wie die Suche durchgeführt wird.
-oder-
Default zurückzugeben null.
Gibt zurück
Ein Objekt, das das Feld darstellt, das den angegebenen Anforderungen entspricht, falls gefunden; andernfalls . null
Implementiert
- Attribute
Ausnahmen
name ist null.
Beispiele
Im folgenden Beispiel wird das Type Objekt für die angegebene Klasse abgerufen, das Objekt für das FieldInfo Feld abgerufen, das mit den angegebenen Bindungskennzeichnungen übereinstimmt, und der Wert des Felds angezeigt.
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));
}
}
open System.Reflection
type MyFieldClassA =
val public Field: string
new () = { Field = "A Field"}
type MyFieldClassB() =
let field = "B Field"
member _.Field
with get () = field
let myFieldObjectB = MyFieldClassB()
let myFieldObjectA = MyFieldClassA()
let myTypeA = typeof<MyFieldClassA>
let myFieldInfo = myTypeA.GetField "Field"
let myTypeB = typeof<MyFieldClassB>
let myFieldInfo1 = myTypeB.GetField("field", BindingFlags.NonPublic ||| BindingFlags.Instance)
printfn $"The value of the public field is: '{myFieldInfo.GetValue myFieldObjectA}'"
printfn $"The value of the private field is: '{myFieldInfo1.GetValue myFieldObjectB}'"
Imports System.Reflection
Public Class MyFieldClassA
Public Field As String = "A Field"
End Class
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
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
End Class
Hinweise
Die folgende Tabelle zeigt, welche Member einer Basisklasse von den Get Methoden zurückgegeben werden, wenn sie einen Typ widerspiegeln.
| Mitgliedertyp | Static | Nicht statisch |
|---|---|---|
| Konstruktor | No | No |
| Feld | No | Yes. Ein Feld ist immer hide-by-name-and-signature. |
| Event | Nicht anwendbar | Die allgemeine Typsystemregel besteht darin, dass die Vererbung mit der der Methode identisch ist, die die Eigenschaft implementiert. Reflection behandelt Eigenschaften als Hide-by-Name-and-Signature. Siehe Hinweis 2 unten. |
| Methode | No | Yes. Eine Methode (sowohl virtuell als auch nicht-virtuell) kann Hide-by-name oder Hide-by-name-and-signature sein. |
| Geschachtelter Typ | No | No |
| Eigentum | Nicht anwendbar | Die allgemeine Typsystemregel besteht darin, dass die Vererbung mit der der Methode identisch ist, die die Eigenschaft implementiert. Reflection behandelt Eigenschaften als Hide-by-Name-and-Signature. Siehe Hinweis 2 unten. |
Hide-by-name-and-signature berücksichtigt alle Elemente der Signatur, einschließlich angepasste Modifikatoren, Rückgabetypen, Parametertypen, Sentinels und nicht verwaltete Aufrufkonventionen. Dies ist ein binärer Vergleich.
Bei der Reflection sind Eigenschaften und Ereignisse Hide-by-Name-and-Signature. Wenn Sie über eine Eigenschaft mit einem Get- und einem Set-Accessor in der Basisklasse verfügen, die abgeleitete Klasse jedoch nur über einen Get-Accessor verfügt, blendet die abgeleitete Klasseneigenschaft die Basisklasseneigenschaft aus, und Sie können nicht auf den Setter der Basisklasse zugreifen.
Benutzerdefinierte Attribute sind nicht Teil des allgemeinen Typsystems.
Die folgenden BindingFlags Filterkennzeichnungen können verwendet werden, um zu definieren, welche Felder in die Suche einbezogen werden sollen:
Sie müssen entweder
BindingFlags.InstanceoderBindingFlags.Staticangeben, um eine Rückgabe zu erhalten.Geben Sie an
BindingFlags.Public, dass öffentliche Felder in die Suche einbezogen werden sollen.Geben Sie an
BindingFlags.NonPublic, dass nicht öffentliche Felder (d. h. private, interne und geschützte Felder) in die Suche einbezogen werden sollen.Geben Sie
BindingFlags.FlattenHierarchyan, umpublicundprotectedstatische Member in der gesamten Hierarchie einzuschließen;privatestatische Member in geerbten Klassen sind nicht enthalten.
Die folgenden BindingFlags Modifiziererkennzeichnungen können verwendet werden, um die Funktionsweise der Suche zu ändern:
BindingFlags.IgnoreCase, um die Groß- und Kleinschreibung vonnamezu ignorieren.BindingFlags.DeclaredOnlyum nur die felder zu durchsuchen, die für die TypeFelder deklariert wurden, nicht die felder, die einfach geerbt wurden.
Weitere Informationen finden Sie unter System.Reflection.BindingFlags.
Wenn der aktuelle Type einen konstruierten generischen Typ darstellt, gibt diese Methode den FieldInfo zurück, bei dem die Typparameter durch die entsprechenden Typargumente ersetzt sind.
Wenn der aktuelle Parameter in der Definition eines generischen Typs oder einer generischen Type Methode darstellt, durchsucht diese Methode die Felder der Klasseneinschränkung.