FieldBuilder Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Egy mezőt definiál és jelöl. Ez az osztály nem örökölhető.
public ref class FieldBuilder abstract : System::Reflection::FieldInfo
public ref class FieldBuilder sealed : System::Reflection::FieldInfo
public ref class FieldBuilder sealed : System::Reflection::FieldInfo, System::Runtime::InteropServices::_FieldBuilder
public abstract class FieldBuilder : System.Reflection.FieldInfo
public sealed 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 MustInherit Class FieldBuilder
Inherits FieldInfo
Public NotInheritable Class FieldBuilder
Inherits FieldInfo
Public NotInheritable Class FieldBuilder
Inherits FieldInfo
Implements _FieldBuilder
- Öröklődés
- Attribútumok
- Megvalósítás
Példák
Az alábbi példa az osztály használatát FieldBuilder mutatja be.
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
Megjegyzések
Példány lekérése FieldBuilder hívással DefineFieldvagy DefineInitializedDataDefineUninitializedData.
Note
A SetValue metódus jelenleg nem támogatott. Kerülő megoldásként kérje le a mezőt úgy, hogy a FieldInfo kész típusra és a hívásra SetValue tükrözi a mező értékét.
Konstruktorok
| Name | Description |
|---|---|
| FieldBuilder() |
Inicializálja a FieldBuilder osztály új példányát. |
Tulajdonságok
| Name | Description |
|---|---|
| Attributes |
A mező attribútumait jelzi. Ez a tulajdonság írásvédett. |
| CustomAttributes |
Lekéri a tag egyéni attribútumait tartalmazó gyűjteményt. (Öröklődés forrása MemberInfo) |
| DeclaringType |
A mezőt deklaráló típus objektumára mutató hivatkozást Type jelez. Ez a tulajdonság írásvédett. |
| FieldHandle |
A mező belső metaadat-leírója. Ez a tulajdonság írásvédett. |
| FieldType |
Azt az Type objektumot jelöli, amely a mező típusát jelöli. Ez a tulajdonság írásvédett. |
| IsAssembly |
Egy értéket kap, amely azt jelzi, hogy a mező lehetséges láthatóságát az határozza-e meg Assembly; vagyis a mező legfeljebb az ugyanazon szerelvény más típusai számára látható, és nem látható a szerelvényen kívüli származtatott típusok számára. (Öröklődés forrása FieldInfo) |
| IsCollectible |
Olyan értéket kap, amely jelzi, hogy ez az MemberInfo objektum egy vagy több gyűjteményben tárolt szerelvényre hivatkozik-e AssemblyLoadContext. (Öröklődés forrása MemberInfo) |
| IsFamily |
Egy értéket kap, amely azt jelzi, hogy a mező láthatóságát a rendszer leírja-e Family; vagyis a mező csak az osztályán és a származtatott osztályán belül látható. (Öröklődés forrása FieldInfo) |
| IsFamilyAndAssembly |
Egy értéket kap, amely jelzi, hogy a mező láthatóságát a program ismerteti-e FamANDAssem; vagyis a mező származtatott osztályokból érhető el, de csak akkor, ha ugyanabban a szerelvényben vannak. (Öröklődés forrása FieldInfo) |
| IsFamilyOrAssembly |
Egy értéket kap, amely jelzi, hogy a mező lehetséges láthatóságát a következő írja-e le FamORAssem: vagyis a mező elérhető származtatott osztályokban, bárhol is vannak, és az ugyanabban a szerelvényben lévő osztályok szerint. (Öröklődés forrása FieldInfo) |
| IsInitOnly |
Egy értéket kap, amely jelzi, hogy a mező csak a konstruktor törzsében állítható-e be. (Öröklődés forrása FieldInfo) |
| IsLiteral |
Beolvas egy értéket, amely jelzi, hogy az érték fordításkor van-e megírva, és nem módosítható. (Öröklődés forrása FieldInfo) |
| IsNotSerialized |
Elavult.
Beolvas egy értéket, amely jelzi, hogy a mező rendelkezik-e attribútummal |
| IsPinvokeImpl |
Beolvas egy értéket, amely jelzi, hogy a megfelelő |
| IsPrivate |
Beolvas egy értéket, amely jelzi, hogy a mező privát-e. (Öröklődés forrása FieldInfo) |
| IsPublic |
Egy értéket kap, amely jelzi, hogy a mező nyilvános-e. (Öröklődés forrása FieldInfo) |
| IsSecurityCritical |
Olyan értéket kap, amely jelzi, hogy az aktuális mező biztonsági szempontból kritikus vagy biztonsági szempontból biztonságos-kritikus az aktuális megbízhatósági szinten. (Öröklődés forrása FieldInfo) |
| IsSecuritySafeCritical |
Olyan értéket kap, amely jelzi, hogy az aktuális mező biztonsági szempontból biztonságos-kritikus-e az aktuális megbízhatósági szinten. (Öröklődés forrása FieldInfo) |
| IsSecurityTransparent |
Olyan értéket kap, amely jelzi, hogy az aktuális mező transzparens-e az aktuális megbízhatósági szinten. (Öröklődés forrása FieldInfo) |
| IsSpecialName |
Beolvas egy értéket, amely jelzi, hogy a megfelelő |
| IsStatic |
Egy értéket kap, amely jelzi, hogy a mező statikus-e. (Öröklődés forrása FieldInfo) |
| MemberType |
Beolvas egy MemberTypes értéket, amely azt jelzi, hogy ez a tag egy mező. (Öröklődés forrása FieldInfo) |
| MetadataToken |
Lekéri a metaadatokban az aktuális dinamikus modult azonosító jogkivonatot. |
| MetadataToken |
Egy metaadat-elemet azonosító értéket kap. (Öröklődés forrása MemberInfo) |
| Module |
Lekéri azt a modult, amelyben a mezőt tartalmazó típus definiálva van. |
| Module |
Lekéri azt a modult, amelyben az aktuális MemberInfo által képviselt tagot deklaráló típus van definiálva. (Öröklődés forrása MemberInfo) |
| Name |
A mező nevét jelzi. Ez a tulajdonság írásvédett. |
| ReflectedType |
Arra az objektumra Type mutató hivatkozást jelzi, amelyből az objektumot beszerezték. Ez a tulajdonság írásvédett. |
Metódusok
| Name | Description |
|---|---|
| Equals(Object) |
Olyan értéket ad vissza, amely jelzi, hogy ez a példány egyenlő-e egy adott objektummal. (Öröklődés forrása FieldInfo) |
| GetCustomAttributes(Boolean) |
A mezőhöz definiált összes egyéni attribútumot adja vissza. |
| GetCustomAttributes(Type, Boolean) |
Az adott típus által azonosított mezőhöz definiált összes egyéni attribútumot adja vissza. |
| GetCustomAttributesData() |
Visszaadja a CustomAttributeData céltagra alkalmazott attribútumok adatait képviselő objektumok listáját. (Öröklődés forrása MemberInfo) |
| GetHashCode() |
A példány kivonatkódját adja vissza. (Öröklődés forrása FieldInfo) |
| GetModifiedFieldType() |
Lekéri a mezőobjektum módosított típusát. (Öröklődés forrása FieldInfo) |
| GetOptionalCustomModifiers() |
Lekéri a mező választható egyéni módosítóinak azonosítására szolgáló típustömböt. (Öröklődés forrása FieldInfo) |
| GetRawConstantValue() |
Egy fordító által a mezőhöz társított literális értéket ad vissza. (Öröklődés forrása FieldInfo) |
| GetRequiredCustomModifiers() |
Lekéri a tulajdonság szükséges egyéni módosítóinak azonosítására szolgáló típusokat tartalmazó tömböt. (Öröklődés forrása FieldInfo) |
| GetToken() |
A mezőt jelképező jogkivonatot adja vissza. |
| GetType() |
Felderíti egy osztálymező attribútumait, és hozzáférést biztosít a mező metaadataihoz. (Öröklődés forrása FieldInfo) |
| GetValue(Object) |
Lekéri az adott objektum által támogatott mező értékét. |
| GetValueDirect(TypedReference) |
Egy adott objektum által támogatott mező értékét adja vissza. (Öröklődés forrása FieldInfo) |
| HasSameMetadataDefinitionAs(MemberInfo) |
Egy mezőt definiál és jelöl. Ez az osztály nem örökölhető. (Öröklődés forrása MemberInfo) |
| IsDefined(Type, Boolean) |
Azt jelzi, hogy a megadott típusú attribútum definiálva van-e egy mezőben. |
| MemberwiseClone() |
Az aktuális Objectpéldány sekély másolatát hozza létre. (Öröklődés forrása Object) |
| SetConstant(Object) |
A mező alapértelmezett értékét állítja be. |
| SetConstantCore(Object) |
Ha egy származtatott osztályban felül van bírálva, a mező alapértelmezett értékét adja meg. |
| SetCustomAttribute(ConstructorInfo, Byte[]) |
Egyéni attribútum beállítása egy megadott egyéni attribútumblob használatával. |
| SetCustomAttribute(CustomAttributeBuilder) |
Egyéni attribútum beállítása egyéni attribútumszerkesztő használatával. |
| SetCustomAttributeCore(ConstructorInfo, ReadOnlySpan<Byte>) |
Ha felül van bírálva egy származtatott osztályban, beállít egy egyéni attribútumot ezen a szerelvényen. |
| SetMarshal(UnmanagedMarshal) |
Elavult.
A mező natív marshalingját ismerteti. |
| SetOffset(Int32) |
A mezőelrendezést adja meg. |
| SetOffsetCore(Int32) |
Ha felül van bírálva egy származtatott osztályban, megadja a mezőelrendezést. |
| SetValue(Object, Object, BindingFlags, Binder, CultureInfo) |
Az adott objektum által támogatott mező értékét állítja be. |
| SetValue(Object, Object) |
Az adott objektum által támogatott mező értékét állítja be. (Öröklődés forrása FieldInfo) |
| SetValueDirect(TypedReference, Object) |
Az adott objektum által támogatott mező értékét állítja be. (Öröklődés forrása FieldInfo) |
| ToString() |
Az aktuális objektumot jelképező sztringet ad vissza. (Öröklődés forrása Object) |
Explicit interfész-implementációk
| Name | Description |
|---|---|
| _FieldBuilder.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Névkészletet képez le a küldési azonosítók megfelelő készletére. |
| _FieldBuilder.GetTypeInfo(UInt32, UInt32, IntPtr) |
Lekéri egy objektum típusadatait, amelyek aztán a felület típusadatainak lekérésére használhatók. |
| _FieldBuilder.GetTypeInfoCount(UInt32) |
Lekéri az objektumok által biztosított típusinformációs felületek számát (0 vagy 1). |
| _FieldBuilder.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Hozzáférést biztosít az objektumok által közzétett tulajdonságokhoz és metódusokhoz. |
| _FieldInfo.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Névkészletet képez le a küldési azonosítók megfelelő készletére. (Öröklődés forrása FieldInfo) |
| _FieldInfo.GetType() |
Lekéri a Type típust FieldInfo képviselő objektumot. (Öröklődés forrása FieldInfo) |
| _FieldInfo.GetTypeInfo(UInt32, UInt32, IntPtr) |
Lekéri egy objektum típusadatait, amelyek aztán a felület típusadatainak lekérésére használhatók. (Öröklődés forrása FieldInfo) |
| _FieldInfo.GetTypeInfoCount(UInt32) |
Lekéri az objektumok által biztosított típusinformációs felületek számát (0 vagy 1). (Öröklődés forrása FieldInfo) |
| _FieldInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Hozzáférést biztosít az objektumok által közzétett tulajdonságokhoz és metódusokhoz. (Öröklődés forrása FieldInfo) |
| _MemberInfo.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Névkészletet képez le a küldési azonosítók megfelelő készletére. (Öröklődés forrása MemberInfo) |
| _MemberInfo.GetType() |
Type Lekéri az MemberInfo osztályt jelképező objektumot. (Öröklődés forrása MemberInfo) |
| _MemberInfo.GetTypeInfo(UInt32, UInt32, IntPtr) |
Lekéri egy objektum típusadatait, amelyek aztán a felület típusadatainak lekérésére használhatók. (Öröklődés forrása MemberInfo) |
| _MemberInfo.GetTypeInfoCount(UInt32) |
Lekéri az objektumok által biztosított típusinformációs felületek számát (0 vagy 1). (Öröklődés forrása MemberInfo) |
| _MemberInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Hozzáférést biztosít az objektumok által közzétett tulajdonságokhoz és metódusokhoz. (Öröklődés forrása MemberInfo) |
| ICustomAttributeProvider.GetCustomAttributes(Boolean) |
A tagon definiált összes egyéni attribútum tömbjének értékét adja vissza, kivéve az elnevezett attribútumokat, vagy üres tömböt, ha nincsenek egyéni attribútumok. (Öröklődés forrása MemberInfo) |
| ICustomAttributeProvider.GetCustomAttributes(Type, Boolean) |
A tagon definiált egyéni attribútumokat tartalmazó tömböt ad vissza, amely típus szerint van azonosítva, vagy üres tömböt ad vissza, ha nincsenek ilyen típusú egyéni attribútumok. (Öröklődés forrása MemberInfo) |
| ICustomAttributeProvider.IsDefined(Type, Boolean) |
Azt jelzi, hogy egy vagy több példány |
Bővítő metódusok
| Name | Description |
|---|---|
| GetCustomAttribute(MemberInfo, Type, Boolean) |
Lekéri a megadott típusú egyéni attribútumot, amely egy adott tagra lesz alkalmazva, és opcionálisan az adott tag elődeit vizsgálja meg. |
| GetCustomAttribute(MemberInfo, Type) |
Egy megadott típusú egyéni attribútumot kér le, amelyet egy adott tagra alkalmaz. |
| GetCustomAttribute<T>(MemberInfo, Boolean) |
Lekéri a megadott típusú egyéni attribútumot, amely egy adott tagra lesz alkalmazva, és opcionálisan az adott tag elődeit vizsgálja meg. |
| GetCustomAttribute<T>(MemberInfo) |
Egy megadott típusú egyéni attribútumot kér le, amelyet egy adott tagra alkalmaz. |
| GetCustomAttributes(MemberInfo, Boolean) |
Lekéri a megadott tagra alkalmazott egyéni attribútumok gyűjteményét, és opcionálisan az adott tag őseit vizsgálja meg. |
| GetCustomAttributes(MemberInfo, Type, Boolean) |
Lekéri a megadott típusú egyéni attribútumok gyűjteményét, amelyek egy adott tagra vonatkoznak, és opcionálisan az adott tag elődeit is érintik. |
| GetCustomAttributes(MemberInfo, Type) |
Egy megadott típusú egyéni attribútumok gyűjteményét kéri le, amelyeket egy adott tagra alkalmaz. |
| GetCustomAttributes(MemberInfo) |
Egy adott tagra alkalmazott egyéni attribútumok gyűjteményét kéri le. |
| GetCustomAttributes<T>(MemberInfo, Boolean) |
Lekéri a megadott típusú egyéni attribútumok gyűjteményét, amelyek egy adott tagra vonatkoznak, és opcionálisan az adott tag elődeit is érintik. |
| GetCustomAttributes<T>(MemberInfo) |
Egy megadott típusú egyéni attribútumok gyűjteményét kéri le, amelyeket egy adott tagra alkalmaz. |
| GetMetadataToken(MemberInfo) |
Ha elérhető, lekéri az adott tag metaadat-jogkivonatát. |
| HasMetadataToken(MemberInfo) |
Olyan értéket ad vissza, amely jelzi, hogy elérhető-e metaadat-jogkivonat a megadott tag számára. |
| IsDefined(MemberInfo, Type, Boolean) |
Azt jelzi, hogy a megadott típusú egyéni attribútumok alkalmazhatók-e egy adott tagra, és szükség esetén alkalmazva vannak-e az elődökre. |
| IsDefined(MemberInfo, Type) |
Azt jelzi, hogy a megadott típusú egyéni attribútumok alkalmazhatók-e egy adott tagra. |