FieldBuilder Osztály

Definíció

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
FieldBuilder
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 NotSerialized .

(Öröklődés forrása FieldInfo)
IsPinvokeImpl

Beolvas egy értéket, amely jelzi, hogy a megfelelő PinvokeImpl attribútum be van-e állítva.FieldAttributes

(Öröklődés forrása FieldInfo)
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ő SpecialName attribútum be van-e állítva az FieldAttributes enumerátorban.

(Öröklődés forrása FieldInfo)
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 attributeType van-e definiálva ezen a tagon.

(Öröklődés forrása MemberInfo)

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.

A következőre érvényes: