FieldBuilder Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Definiuje i reprezentuje pole. Klasa ta nie może być dziedziczona.
public ref class FieldBuilder sealed : System::Reflection::FieldInfo
public ref class FieldBuilder abstract : System::Reflection::FieldInfo
public ref class FieldBuilder sealed : System::Reflection::FieldInfo, System::Runtime::InteropServices::_FieldBuilder
public sealed class FieldBuilder : System.Reflection.FieldInfo
public abstract class FieldBuilder : System.Reflection.FieldInfo
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
public sealed class FieldBuilder : System.Reflection.FieldInfo, System.Runtime.InteropServices._FieldBuilder
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class FieldBuilder : System.Reflection.FieldInfo, System.Runtime.InteropServices._FieldBuilder
type FieldBuilder = class
inherit FieldInfo
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
type FieldBuilder = class
inherit FieldInfo
interface _FieldBuilder
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type FieldBuilder = class
inherit FieldInfo
interface _FieldBuilder
Public NotInheritable Class FieldBuilder
Inherits FieldInfo
Public MustInherit Class FieldBuilder
Inherits FieldInfo
Public NotInheritable Class FieldBuilder
Inherits FieldInfo
Implements _FieldBuilder
- Dziedziczenie
- Atrybuty
- Implementuje
Przykłady
Poniższy przykład ilustruje użycie FieldBuilder
klasy.
using System;
using System.Reflection;
using System.Reflection.Emit;
public class FieldBuilder_Sample
{
private static Type? CreateType()
{
// Create an assembly.
AssemblyName assemName = new AssemblyName();
assemName.Name = "DynamicAssembly";
AssemblyBuilder assemBuilder =
AssemblyBuilder.DefineDynamicAssembly(assemName, AssemblyBuilderAccess.Run);
// Create a dynamic module in Dynamic Assembly.
ModuleBuilder modBuilder = assemBuilder.DefineDynamicModule("DynamicModule");
// Define a public class named "DynamicClass" in the assembly.
TypeBuilder typBuilder = modBuilder.DefineType("DynamicClass", TypeAttributes.Public);
// Define a private String field named "DynamicField" in the type.
FieldBuilder fldBuilder = typBuilder.DefineField("DynamicField",
typeof(string), FieldAttributes.Private | FieldAttributes.Static);
// Create the constructor.
Type[] constructorArgs = { typeof(String) };
ConstructorBuilder constructor = typBuilder.DefineConstructor(
MethodAttributes.Public, CallingConventions.Standard, constructorArgs);
ILGenerator constructorIL = constructor.GetILGenerator();
constructorIL.Emit(OpCodes.Ldarg_0);
ConstructorInfo? superConstructor = typeof(Object).GetConstructor(new Type[0]);
constructorIL.Emit(OpCodes.Call, superConstructor!);
constructorIL.Emit(OpCodes.Ldarg_0);
constructorIL.Emit(OpCodes.Ldarg_1);
constructorIL.Emit(OpCodes.Stfld, fldBuilder);
constructorIL.Emit(OpCodes.Ret);
// Create the DynamicMethod method.
MethodBuilder methBuilder = typBuilder.DefineMethod("DynamicMethod",
MethodAttributes.Public, typeof(String), null);
ILGenerator methodIL = methBuilder.GetILGenerator();
methodIL.Emit(OpCodes.Ldarg_0);
methodIL.Emit(OpCodes.Ldfld, fldBuilder);
methodIL.Emit(OpCodes.Ret);
Console.WriteLine($"Name : {fldBuilder.Name}");
Console.WriteLine($"DeclaringType : {fldBuilder.DeclaringType}");
Console.WriteLine($"Type : {fldBuilder.FieldType}");
return typBuilder.CreateType();
}
public static void Main()
{
Type? dynType = CreateType();
try
{
if (dynType is not null)
{
// Create an instance of the "HelloWorld" class.
Object? helloWorld = Activator.CreateInstance(dynType, new Object[] { "HelloWorld" });
// Invoke the "DynamicMethod" method of the "DynamicClass" class.
Object? obj = dynType.InvokeMember("DynamicMethod",
BindingFlags.InvokeMethod, null, helloWorld, null);
Console.WriteLine($"DynamicClass.DynamicMethod returned: \"{obj}\"");
}
}
catch (MethodAccessException e)
{
Console.WriteLine($"{e.GetType().Name}: {e.Message}");
}
}
}
Imports System.Reflection
Imports System.Reflection.Emit
Public Module FieldBuilder_Sample
Private Function CreateType() As Type
' Create an assembly.
Dim assemName As New AssemblyName()
assemName.Name = "DynamicAssembly"
Dim assemBuilder As AssemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(assemName,
AssemblyBuilderAccess.Run)
' Create a dynamic module in Dynamic Assembly.
Dim modBuilder As ModuleBuilder = assemBuilder.DefineDynamicModule("DynamicModule")
' Define a public class named "DynamicClass" in the assembly.
Dim typBuilder As TypeBuilder = modBuilder.DefineType("DynamicClass",
TypeAttributes.Public)
' Define a private String field named "DynamicField" in the type.
Dim fldBuilder As FieldBuilder = typBuilder.DefineField("DynamicField",
GetType(String), FieldAttributes.Private Or FieldAttributes.Static)
' Create the constructor.
Dim constructorArgs As Type() = {GetType(String)}
Dim constructor As ConstructorBuilder =
typBuilder.DefineConstructor(MethodAttributes.Public,
CallingConventions.Standard, constructorArgs)
Dim constructorIL As ILGenerator = constructor.GetILGenerator()
constructorIL.Emit(OpCodes.Ldarg_0)
Dim superConstructor As ConstructorInfo = GetType(Object).GetConstructor(New Type() {})
constructorIL.Emit(OpCodes.Call, superConstructor)
constructorIL.Emit(OpCodes.Ldarg_0)
constructorIL.Emit(OpCodes.Ldarg_1)
constructorIL.Emit(OpCodes.Stfld, fldBuilder)
constructorIL.Emit(OpCodes.Ret)
' Create the DynamicMethod method.
Dim methBuilder As MethodBuilder = typBuilder.DefineMethod("DynamicMethod",
MethodAttributes.Public, GetType(String), Nothing)
Dim methodIL As ILGenerator = methBuilder.GetILGenerator()
methodIL.Emit(OpCodes.Ldarg_0)
methodIL.Emit(OpCodes.Ldfld, fldBuilder)
methodIL.Emit(OpCodes.Ret)
Console.WriteLine($"Name : {fldBuilder.Name}")
Console.WriteLine($"DeclaringType : {fldBuilder.DeclaringType}")
Console.WriteLine($"Type : {fldBuilder.FieldType}")
Return typBuilder.CreateType()
End Function
Public Sub Main()
Dim dynType As Type = CreateType()
Try
' Create an instance of the "HelloWorld" class.
Dim helloWorld As Object = Activator.CreateInstance(dynType, New Object() {"HelloWorld"})
' Invoke the "DynamicMethod" method of the "DynamicClass" class.
Dim obj As Object = dynType.InvokeMember("DynamicMethod",
BindingFlags.InvokeMethod, Nothing, helloWorld, Nothing)
Console.WriteLine($"DynamicClass.DynamicMethod returned: ""{obj}""")
Catch e As MethodAccessException
Console.WriteLine($"{e.GetType().Name}: {e.Message}")
End Try
End Sub
End Module
Uwagi
Pobierz wystąpienie, FieldBuilder
wywołując metodę DefineField, DefineInitializedDatalub DefineUninitializedData.
Uwaga
Metoda nie jest obecnie obsługiwana SetValue . Aby obejść ten problem, pobierz element FieldInfo , odzwierciedlając gotowy typ i wywołanie SetValue , aby ustawić wartość pola.
Konstruktory
FieldBuilder() |
Inicjuje nowe wystąpienie klasy FieldBuilder. |
Właściwości
Attributes |
Wskazuje atrybuty tego pola. Ta właściwość jest tylko do odczytu. |
CustomAttributes |
Pobiera kolekcję zawierającą atrybuty niestandardowe tego elementu członkowskiego. (Odziedziczone po MemberInfo) |
DeclaringType |
Wskazuje odwołanie do Type obiektu dla typu, który deklaruje to pole. Ta właściwość jest tylko do odczytu. |
FieldHandle |
Wskazuje wewnętrzny uchwyt metadanych dla tego pola. Ta właściwość jest tylko do odczytu. |
FieldHandle |
Pobiera element |
FieldType |
Type Wskazuje obiekt reprezentujący typ tego pola. Ta właściwość jest tylko do odczytu. |
IsAssembly |
Pobiera wartość wskazującą, czy potencjalna widoczność tego pola jest opisana przez Assemblyprogram ; oznacza to, że pole jest widoczne co najwyżej dla innych typów w tym samym zestawie i nie jest widoczne dla typów pochodnych poza zestawem. (Odziedziczone po FieldInfo) |
IsCollectible |
Pobiera wartość wskazującą, czy ten MemberInfo obiekt jest częścią zestawu przechowywanego w obiekcie zbieralnym AssemblyLoadContext. (Odziedziczone po MemberInfo) |
IsFamily |
Pobiera wartość wskazującą, czy widoczność tego pola jest opisana przez Familyelement ; oznacza to, że pole jest widoczne tylko w jej klasie i klasach pochodnych. (Odziedziczone po FieldInfo) |
IsFamilyAndAssembly |
Pobiera wartość wskazującą, czy widoczność tego pola jest opisana przez FamANDAssemprogram ; oznacza to, że dostęp do pola można uzyskać z klas pochodnych, ale tylko wtedy, gdy znajdują się w tym samym zestawie. (Odziedziczone po FieldInfo) |
IsFamilyOrAssembly |
Pobiera wartość wskazującą, czy potencjalna widoczność tego pola jest opisana przez FamORAssemelement ; oznacza to, że dostęp do pola można uzyskać za pomocą klas pochodnych wszędzie tam, gdzie są, oraz przez klasy w tym samym zestawie. (Odziedziczone po FieldInfo) |
IsInitOnly |
Pobiera wartość wskazującą, czy pole można ustawić tylko w treści konstruktora. (Odziedziczone po FieldInfo) |
IsLiteral |
Pobiera wartość wskazującą, czy wartość jest zapisywana w czasie kompilacji i nie można jej zmienić. (Odziedziczone po FieldInfo) |
IsNotSerialized |
Przestarzałe.
Pobiera wartość wskazującą, czy to pole ma |
IsPinvokeImpl |
Pobiera wartość wskazującą, czy odpowiedni |
IsPrivate |
Pobiera wartość wskazującą, czy pole jest prywatne. (Odziedziczone po FieldInfo) |
IsPublic |
Pobiera wartość wskazującą, czy pole jest publiczne. (Odziedziczone po FieldInfo) |
IsSecurityCritical |
Pobiera wartość wskazującą, czy bieżące pole ma krytyczne znaczenie dla zabezpieczeń, czy bezpieczeństwo krytyczne dla bezpieczeństwa na bieżącym poziomie zaufania. (Odziedziczone po FieldInfo) |
IsSecuritySafeCritical |
Pobiera wartość wskazującą, czy bieżące pole jest krytyczne dla bezpieczeństwa na bieżącym poziomie zaufania. (Odziedziczone po FieldInfo) |
IsSecurityTransparent |
Pobiera wartość wskazującą, czy bieżące pole jest przezroczyste na bieżącym poziomie zaufania. (Odziedziczone po FieldInfo) |
IsSpecialName |
Pobiera wartość wskazującą, czy odpowiedni |
IsStatic |
Pobiera wartość wskazującą, czy pole jest statyczne. (Odziedziczone po FieldInfo) |
MemberType |
Pobiera wartość wskazującą MemberTypes , że ten element członkowski jest polem. (Odziedziczone po FieldInfo) |
MetadataToken |
Pobiera token identyfikujący bieżący moduł dynamiczny w metadanych. |
MetadataToken |
Pobiera wartość identyfikującą element metadanych. (Odziedziczone po MemberInfo) |
Module |
Pobiera moduł, w którym jest definiowany typ zawierający to pole. |
Module |
Pobiera moduł, w którym typ, który deklaruje element członkowski reprezentowany przez bieżący MemberInfo jest zdefiniowany. (Odziedziczone po MemberInfo) |
Name |
Wskazuje nazwę tego pola. Ta właściwość jest tylko do odczytu. |
ReflectedType |
Wskazuje odwołanie do Type obiektu, z którego ten obiekt został uzyskany. Ta właściwość jest tylko do odczytu. |
ReflectedType |
Pobiera obiekt klasy, który został użyty do uzyskania tego wystąpienia klasy |
Metody
Equals(Object) |
Zwraca wartość wskazującą, czy to wystąpienie jest równe podanemu obiektowi. (Odziedziczone po FieldInfo) |
GetCustomAttributes(Boolean) |
Zwraca wszystkie atrybuty niestandardowe zdefiniowane dla tego pola. |
GetCustomAttributes(Boolean) |
Po zastąpieniu w klasie pochodnej zwraca tablicę wszystkich atrybutów niestandardowych zastosowanych do tego elementu członkowskiego. (Odziedziczone po MemberInfo) |
GetCustomAttributes(Type, Boolean) |
Zwraca wszystkie atrybuty niestandardowe zdefiniowane dla tego pola zidentyfikowane przez dany typ. |
GetCustomAttributes(Type, Boolean) |
Po przesłonięciu w klasie pochodnej zwraca tablicę atrybutów niestandardowych zastosowanych do tego elementu członkowskiego i zidentyfikowaną przez Typeelement . (Odziedziczone po MemberInfo) |
GetCustomAttributesData() |
Zwraca listę CustomAttributeData obiektów reprezentujących dane dotyczące atrybutów, które zostały zastosowane do elementu docelowego. (Odziedziczone po MemberInfo) |
GetHashCode() |
Zwraca wartość skrótu dla tego wystąpienia. (Odziedziczone po FieldInfo) |
GetModifiedFieldType() |
Pobiera zmodyfikowany typ tego obiektu pola. (Odziedziczone po FieldInfo) |
GetOptionalCustomModifiers() |
Pobiera tablicę typów identyfikujących opcjonalne modyfikatory niestandardowe pola. (Odziedziczone po FieldInfo) |
GetRawConstantValue() |
Zwraca wartość literału skojarzona z polem przez kompilator. (Odziedziczone po FieldInfo) |
GetRequiredCustomModifiers() |
Pobiera tablicę typów identyfikujących wymagane modyfikatory niestandardowe właściwości. (Odziedziczone po FieldInfo) |
GetToken() |
Zwraca token reprezentujący to pole. |
GetType() |
Odnajduje atrybuty pola klasy i zapewnia dostęp do metadanych pola. (Odziedziczone po FieldInfo) |
GetValue(Object) |
Pobiera wartość pola obsługiwanego przez dany obiekt. |
GetValueDirect(TypedReference) |
Zwraca wartość pola obsługiwanego przez dany obiekt. (Odziedziczone po FieldInfo) |
HasSameMetadataDefinitionAs(MemberInfo) |
Definiuje i reprezentuje pole. Klasa ta nie może być dziedziczona. (Odziedziczone po MemberInfo) |
IsDefined(Type, Boolean) |
Wskazuje, czy atrybut o określonym typie jest zdefiniowany w polu. |
IsDefined(Type, Boolean) |
Po przesłonięciu w klasie pochodnej wskazuje, czy do tego elementu członkowskiego zastosowano co najmniej jeden atrybut określonego typu lub jego typów pochodnych. (Odziedziczone po MemberInfo) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
SetConstant(Object) |
Ustawia wartość domyślną tego pola. |
SetConstantCore(Object) |
Po zastąpieniu w klasie pochodnej ustawia wartość domyślną tego pola. |
SetCustomAttribute(ConstructorInfo, Byte[]) |
Ustawia atrybut niestandardowy przy użyciu określonego obiektu blob atrybutu niestandardowego. |
SetCustomAttribute(CustomAttributeBuilder) |
Ustawia atrybut niestandardowy przy użyciu konstruktora atrybutów niestandardowych. |
SetCustomAttributeCore(ConstructorInfo, ReadOnlySpan<Byte>) |
Po zastąpieniu w klasie pochodnej ustawia atrybut niestandardowy dla tego zestawu. |
SetMarshal(UnmanagedMarshal) |
Przestarzałe.
Opisuje natywne przeprowadzanie marshalingu pola. |
SetOffset(Int32) |
Określa układ pola. |
SetOffsetCore(Int32) |
Podczas zastępowania w klasie pochodnej określa układ pola. |
SetValue(Object, Object) |
Ustawia wartość pola obsługiwanego przez dany obiekt. (Odziedziczone po FieldInfo) |
SetValue(Object, Object, BindingFlags, Binder, CultureInfo) |
Ustawia wartość pola obsługiwanego przez dany obiekt. |
SetValue(Object, Object, BindingFlags, Binder, CultureInfo) |
Po zastąpieniu w klasie pochodnej ustawia wartość pola obsługiwanego przez dany obiekt. (Odziedziczone po FieldInfo) |
SetValueDirect(TypedReference, Object) |
Ustawia wartość pola obsługiwanego przez dany obiekt. (Odziedziczone po FieldInfo) |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
Jawne implementacje interfejsu
_FieldBuilder.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Zestaw nazw jest mapowany na odpowiedni zestaw identyfikatorów wysyłania. |
_FieldBuilder.GetTypeInfo(UInt32, UInt32, IntPtr) |
Pobiera informacje o typie dla obiektu, których następnie można użyć do uzyskania informacji o typie interfejsu. |
_FieldBuilder.GetTypeInfoCount(UInt32) |
Pobiera informację o liczbie typów interfejsów, jakie zawiera obiekt (0 lub 1). |
_FieldBuilder.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Umożliwia dostęp do właściwości i metod udostępnianych przez obiekt. |
_FieldInfo.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Zestaw nazw jest mapowany na odpowiedni zestaw identyfikatorów wysyłania. (Odziedziczone po FieldInfo) |
_FieldInfo.GetType() |
Type Pobiera obiekt reprezentujący FieldInfo typ. (Odziedziczone po FieldInfo) |
_FieldInfo.GetTypeInfo(UInt32, UInt32, IntPtr) |
Pobiera informacje o typie dla obiektu, których następnie można użyć do uzyskania informacji o typie interfejsu. (Odziedziczone po FieldInfo) |
_FieldInfo.GetTypeInfoCount(UInt32) |
Pobiera informację o liczbie typów interfejsów, jakie zawiera obiekt (0 lub 1). (Odziedziczone po FieldInfo) |
_FieldInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Umożliwia dostęp do właściwości i metod udostępnianych przez obiekt. (Odziedziczone po FieldInfo) |
_MemberInfo.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Zestaw nazw jest mapowany na odpowiedni zestaw identyfikatorów wysyłania. (Odziedziczone po MemberInfo) |
_MemberInfo.GetType() |
Pobiera obiekt reprezentujący klasę TypeMemberInfo . (Odziedziczone po MemberInfo) |
_MemberInfo.GetTypeInfo(UInt32, UInt32, IntPtr) |
Pobiera informacje o typie dla obiektu, których następnie można użyć do uzyskania informacji o typie interfejsu. (Odziedziczone po MemberInfo) |
_MemberInfo.GetTypeInfoCount(UInt32) |
Pobiera informację o liczbie typów interfejsów, jakie zawiera obiekt (0 lub 1). (Odziedziczone po MemberInfo) |
_MemberInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Umożliwia dostęp do właściwości i metod udostępnianych przez obiekt. (Odziedziczone po MemberInfo) |
ICustomAttributeProvider.GetCustomAttributes(Boolean) |
Zwraca tablicę wszystkich atrybutów niestandardowych zdefiniowanych w tym elemencie członkowskim, z wyłączeniem nazwanych atrybutów lub pustą tablicą, jeśli nie ma atrybutów niestandardowych. (Odziedziczone po MemberInfo) |
ICustomAttributeProvider.GetCustomAttributes(Type, Boolean) |
Zwraca tablicę atrybutów niestandardowych zdefiniowanych na tym elemencie członkowskim, identyfikowaną przez typ lub pustą tablicę, jeśli nie ma atrybutów niestandardowych tego typu. (Odziedziczone po MemberInfo) |
ICustomAttributeProvider.IsDefined(Type, Boolean) |
Wskazuje, czy na tym elemencie członkowskim zdefiniowano jedno lub więcej wystąpień |
Metody rozszerzania
GetCustomAttribute(MemberInfo, Type) |
Pobiera atrybut niestandardowy określonego typu, który jest stosowany do określonego elementu członkowskiego. |
GetCustomAttribute(MemberInfo, Type, Boolean) |
Pobiera atrybut niestandardowy określonego typu, który jest stosowany do określonego elementu członkowskiego, i opcjonalnie sprawdza przodków tego elementu członkowskiego. |
GetCustomAttribute<T>(MemberInfo) |
Pobiera atrybut niestandardowy określonego typu, który jest stosowany do określonego elementu członkowskiego. |
GetCustomAttribute<T>(MemberInfo, Boolean) |
Pobiera atrybut niestandardowy określonego typu, który jest stosowany do określonego elementu członkowskiego, i opcjonalnie sprawdza przodków tego elementu członkowskiego. |
GetCustomAttributes(MemberInfo) |
Pobiera kolekcję atrybutów niestandardowych, które są stosowane do określonego elementu członkowskiego. |
GetCustomAttributes(MemberInfo, Boolean) |
Pobiera kolekcję atrybutów niestandardowych, które są stosowane do określonego elementu członkowskiego, i opcjonalnie sprawdza przodków tego elementu członkowskiego. |
GetCustomAttributes(MemberInfo, Type) |
Pobiera kolekcję atrybutów niestandardowych określonego typu, które są stosowane do określonego elementu członkowskiego. |
GetCustomAttributes(MemberInfo, Type, Boolean) |
Pobiera kolekcję atrybutów niestandardowych określonego typu, które są stosowane do określonego elementu członkowskiego, i opcjonalnie sprawdza przodków tego elementu członkowskiego. |
GetCustomAttributes<T>(MemberInfo) |
Pobiera kolekcję atrybutów niestandardowych określonego typu, które są stosowane do określonego elementu członkowskiego. |
GetCustomAttributes<T>(MemberInfo, Boolean) |
Pobiera kolekcję atrybutów niestandardowych określonego typu, które są stosowane do określonego elementu członkowskiego, i opcjonalnie sprawdza przodków tego elementu członkowskiego. |
IsDefined(MemberInfo, Type) |
Wskazuje, czy atrybuty niestandardowe określonego typu są stosowane do określonego elementu członkowskiego. |
IsDefined(MemberInfo, Type, Boolean) |
Wskazuje, czy atrybuty niestandardowe określonego typu są stosowane do określonego elementu członkowskiego i, opcjonalnie, stosowane do jego elementów nadrzędnych. |
GetMetadataToken(MemberInfo) |
Pobiera token metadanych dla danego elementu członkowskiego, jeśli jest dostępny. |
HasMetadataToken(MemberInfo) |
Zwraca wartość wskazującą, czy token metadanych jest dostępny dla określonego elementu członkowskiego. |