Sdílet prostřednictvím


FieldBuilder Třída

Definice

Definuje a představuje pole. Tato třída se nemůže dědit.

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
Dědičnost
FieldBuilder
Atributy
Implementuje

Příklady

Následující příklad znázorňuje použití FieldBuilder třídy.

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

Poznámky

Získejte instanci objektu FieldBuilder voláním DefineField, DefineInitializedDatanebo DefineUninitializedData.

Poznámka

Metoda SetValue se v současné době nepodporuje. Jako alternativní řešení načtěte FieldInfo hodnotu tak, že se odrazíte na dokončeném typu a zavoláním SetValue , abyste nastavili hodnotu pole.

Konstruktory

FieldBuilder()

Inicializuje novou instanci FieldBuilder třídy.

Vlastnosti

Attributes

Označuje atributy tohoto pole. Tato vlastnost je jen ke čtení.

CustomAttributes

Získá kolekci, která obsahuje vlastní atributy tohoto člena.

(Zděděno od MemberInfo)
DeclaringType

Označuje odkaz na Type objekt pro typ, který deklaruje toto pole. Tato vlastnost je jen ke čtení.

FieldHandle

Označuje popisovač interních metadat pro toto pole. Tato vlastnost je jen ke čtení.

FieldHandle

RuntimeFieldHandleZíská , což je popisovač pro reprezentaci interních metadat pole.

(Zděděno od FieldInfo)
FieldType

Označuje Type objekt, který představuje typ tohoto pole. Tato vlastnost je jen ke čtení.

IsAssembly

Získá hodnotu označující, zda potenciální viditelnost tohoto pole je popsána ; Assemblyto znamená, že pole je viditelné maximálně pro jiné typy ve stejném sestavení a není viditelné pro odvozené typy mimo sestavení.

(Zděděno od FieldInfo)
IsCollectible

Získá hodnotu, která označuje, zda je tento MemberInfo objekt součástí sestavení uchovávaného v collectible AssemblyLoadContext.

(Zděděno od MemberInfo)
IsFamily

Získá hodnotu označující, zda viditelnost tohoto pole je popsána ; Familyto znamená, že pole je viditelné pouze v rámci své třídy a odvozené třídy.

(Zděděno od FieldInfo)
IsFamilyAndAssembly

Získá hodnotu označující, zda viditelnost tohoto pole je popsána ; FamANDAssemto znamená, že pole lze získat přístup z odvozených tříd, ale pouze pokud jsou ve stejném sestavení.

(Zděděno od FieldInfo)
IsFamilyOrAssembly

Získá hodnotu označující, zda je potenciální viditelnost tohoto pole popsána ; FamORAssemto znamená, že pole může být přístupny odvozenými třídami bez ohledu na to, kde jsou, a podle tříd ve stejném sestavení.

(Zděděno od FieldInfo)
IsInitOnly

Získá hodnotu označující, zda pole lze nastavit pouze v těle konstruktoru.

(Zděděno od FieldInfo)
IsLiteral

Získá hodnotu označující, zda je hodnota zapsána v době kompilace a nelze změnit.

(Zděděno od FieldInfo)
IsNotSerialized
Zastaralé.

Získá hodnotu označující, zda má toto pole NotSerialized atribut.

(Zděděno od FieldInfo)
IsPinvokeImpl

Získá hodnotu označující, zda odpovídající PinvokeImpl atribut je nastaven v FieldAttributes.

(Zděděno od FieldInfo)
IsPrivate

Získá hodnotu označující, zda je pole soukromé.

(Zděděno od FieldInfo)
IsPublic

Získá hodnotu označující, zda je pole veřejné.

(Zděděno od FieldInfo)
IsSecurityCritical

Získá hodnotu, která označuje, zda je aktuální pole na aktuální úrovni důvěryhodnosti kritickým zabezpečením nebo bezpečné zabezpečení.

(Zděděno od FieldInfo)
IsSecuritySafeCritical

Získá hodnotu, která označuje, zda aktuální pole je na aktuální úrovni důvěryhodnosti kritický z hlediska zabezpečení.

(Zděděno od FieldInfo)
IsSecurityTransparent

Získá hodnotu, která označuje, zda aktuální pole je transparentní na aktuální úrovni důvěryhodnosti.

(Zděděno od FieldInfo)
IsSpecialName

Získá hodnotu označující, zda odpovídající SpecialName atribut je nastaven v FieldAttributes enumerátoru.

(Zděděno od FieldInfo)
IsStatic

Získá hodnotu označující, zda je pole statické.

(Zděděno od FieldInfo)
MemberType

MemberTypes Získá hodnotu označující, že tento člen je pole.

(Zděděno od FieldInfo)
MetadataToken

Získá token, který identifikuje aktuální dynamický modul v metadatech.

MetadataToken

Získá hodnotu, která identifikuje metadata element.

(Zděděno od MemberInfo)
Module

Získá modul, ve kterém je definován typ, který obsahuje toto pole.

Module

Získá modul, ve kterém typ, který deklaruje člen reprezentovaný aktuální MemberInfo je definován.

(Zděděno od MemberInfo)
Name

Označuje název tohoto pole. Tato vlastnost je jen ke čtení.

ReflectedType

Označuje odkaz na Type objekt, ze kterého byl tento objekt získán. Tato vlastnost je jen ke čtení.

ReflectedType

Získá objekt třídy, který byl použit k získání této instance .MemberInfo

(Zděděno od MemberInfo)

Metody

Equals(Object)

Vrací hodnotu, která určuje, zda je tato instance rovna zadanému objektu.

(Zděděno od FieldInfo)
GetCustomAttributes(Boolean)

Vrátí všechny vlastní atributy definované pro toto pole.

GetCustomAttributes(Boolean)

Při přepsání v odvozené třídě vrátí pole všech vlastních atributů použitých pro tento člen.

(Zděděno od MemberInfo)
GetCustomAttributes(Type, Boolean)

Vrátí všechny vlastní atributy definované pro toto pole identifikované daným typem.

GetCustomAttributes(Type, Boolean)

Při přepsání v odvozené třídě vrátí pole vlastních atributů použitých na tohoto člena a identifikovaných pomocí Type.

(Zděděno od MemberInfo)
GetCustomAttributesData()

Vrátí seznam CustomAttributeData objektů představujících data o atributech, které byly použity na cílového člena.

(Zděděno od MemberInfo)
GetHashCode()

Vrátí hodnotu hash pro tuto instanci.

(Zděděno od FieldInfo)
GetModifiedFieldType()

Získá změněný typ tohoto pole objektu.

(Zděděno od FieldInfo)
GetOptionalCustomModifiers()

Získá pole typů, které identifikují volitelné vlastní modifikátory pole.

(Zděděno od FieldInfo)
GetRawConstantValue()

Vrátí hodnotu literálu přidruženou k poli kompilátorem.

(Zděděno od FieldInfo)
GetRequiredCustomModifiers()

Získá pole typů, které identifikují požadované vlastní modifikátory vlastnosti.

(Zděděno od FieldInfo)
GetToken()

Vrátí token představující toto pole.

GetType()

Zjistí atributy pole třídy a poskytuje přístup k metadatům pole.

(Zděděno od FieldInfo)
GetValue(Object)

Načte hodnotu pole podporovaného daným objektem.

GetValueDirect(TypedReference)

Vrátí hodnotu pole podporovaného daným objektem.

(Zděděno od FieldInfo)
HasSameMetadataDefinitionAs(MemberInfo)

Definuje a představuje pole. Tato třída se nemůže dědit.

(Zděděno od MemberInfo)
IsDefined(Type, Boolean)

Určuje, zda je atribut se zadaným typem definován v poli.

IsDefined(Type, Boolean)

Při přepsání v odvozené třídě označuje, zda jeden nebo více atributů zadaného typu nebo jeho odvozených typů je použit na tohoto člena.

(Zděděno od MemberInfo)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
SetConstant(Object)

Nastaví výchozí hodnotu tohoto pole.

SetConstantCore(Object)

Při přepsání v odvozené třídě nastaví výchozí hodnotu tohoto pole.

SetCustomAttribute(ConstructorInfo, Byte[])

Nastaví vlastní atribut pomocí zadaného objektu blob vlastního atributu.

SetCustomAttribute(CustomAttributeBuilder)

Nastaví vlastní atribut pomocí vlastního tvůrce atributů.

SetCustomAttributeCore(ConstructorInfo, ReadOnlySpan<Byte>)

Při přepsání v odvozené třídě nastaví vlastní atribut v tomto sestavení.

SetMarshal(UnmanagedMarshal)
Zastaralé.

Popisuje nativní zařazování pole.

SetOffset(Int32)

Určuje rozložení pole.

SetOffsetCore(Int32)

Při přepsání v odvozené třídě určuje rozložení pole.

SetValue(Object, Object)

Nastaví hodnotu pole podporovaného daným objektem.

(Zděděno od FieldInfo)
SetValue(Object, Object, BindingFlags, Binder, CultureInfo)

Nastaví hodnotu pole podporovaného daným objektem.

SetValue(Object, Object, BindingFlags, Binder, CultureInfo)

Při přepsání v odvozené třídě nastaví hodnotu pole podporovaného daným objektem.

(Zděděno od FieldInfo)
SetValueDirect(TypedReference, Object)

Nastaví hodnotu pole podporovaného daným objektem.

(Zděděno od FieldInfo)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Explicitní implementace rozhraní

_FieldBuilder.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání.

_FieldBuilder.GetTypeInfo(UInt32, UInt32, IntPtr)

Načte informace o typu objektu, který lze použít k získání informací o typu pro rozhraní.

_FieldBuilder.GetTypeInfoCount(UInt32)

Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1).

_FieldBuilder.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Poskytuje přístup k vlastnostem a metodám vystaveným objektem.

_FieldInfo.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání.

(Zděděno od FieldInfo)
_FieldInfo.GetType()

Type Získá objekt představující FieldInfo typ.

(Zděděno od FieldInfo)
_FieldInfo.GetTypeInfo(UInt32, UInt32, IntPtr)

Načte informace o typu objektu, který lze použít k získání informací o typu pro rozhraní.

(Zděděno od FieldInfo)
_FieldInfo.GetTypeInfoCount(UInt32)

Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1).

(Zděděno od FieldInfo)
_FieldInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Poskytuje přístup k vlastnostem a metodám vystaveným objektem.

(Zděděno od FieldInfo)
_MemberInfo.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání.

(Zděděno od MemberInfo)
_MemberInfo.GetType()

Type Získá objekt představující MemberInfo třídu.

(Zděděno od MemberInfo)
_MemberInfo.GetTypeInfo(UInt32, UInt32, IntPtr)

Načte informace o typu objektu, který lze použít k získání informací o typu pro rozhraní.

(Zděděno od MemberInfo)
_MemberInfo.GetTypeInfoCount(UInt32)

Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1).

(Zděděno od MemberInfo)
_MemberInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Poskytuje přístup k vlastnostem a metodám vystaveným objektem.

(Zděděno od MemberInfo)
ICustomAttributeProvider.GetCustomAttributes(Boolean)

Vrátí pole všech vlastních atributů definovaných v tomto členu, s výjimkou pojmenovaných atributů, nebo prázdné pole, pokud neexistují žádné vlastní atributy.

(Zděděno od MemberInfo)
ICustomAttributeProvider.GetCustomAttributes(Type, Boolean)

Vrátí pole vlastních atributů definovaných na tomto členu, které jsou identifikovány typem, nebo prázdné pole, pokud neexistují žádné vlastní atributy tohoto typu.

(Zděděno od MemberInfo)
ICustomAttributeProvider.IsDefined(Type, Boolean)

Určuje, zda je u tohoto člena attributeType definována jedna nebo více instancí.

(Zděděno od MemberInfo)

Metody rozšíření

GetCustomAttribute(MemberInfo, Type)

Načte vlastní atribut zadaného typu, který je použit na zadaného člena.

GetCustomAttribute(MemberInfo, Type, Boolean)

Načte vlastní atribut zadaného typu, který je použit na zadaného člena, a volitelně zkontroluje předchůdce tohoto člena.

GetCustomAttribute<T>(MemberInfo)

Načte vlastní atribut zadaného typu, který je použit na zadaného člena.

GetCustomAttribute<T>(MemberInfo, Boolean)

Načte vlastní atribut zadaného typu, který je použit na zadaného člena, a volitelně zkontroluje předchůdce tohoto člena.

GetCustomAttributes(MemberInfo)

Načte kolekci vlastních atributů, které jsou použity na zadaného člena.

GetCustomAttributes(MemberInfo, Boolean)

Načte kolekci vlastních atributů, které jsou použity na zadaného člena, a volitelně zkontroluje předky tohoto člena.

GetCustomAttributes(MemberInfo, Type)

Načte kolekci vlastních atributů zadaného typu, které jsou použity na zadaného člena.

GetCustomAttributes(MemberInfo, Type, Boolean)

Načte kolekci vlastních atributů zadaného typu, které se použijí na zadaného člena, a volitelně zkontroluje předky tohoto člena.

GetCustomAttributes<T>(MemberInfo)

Načte kolekci vlastních atributů zadaného typu, které jsou použity na zadaného člena.

GetCustomAttributes<T>(MemberInfo, Boolean)

Načte kolekci vlastních atributů zadaného typu, které se použijí na zadaného člena, a volitelně zkontroluje předky tohoto člena.

IsDefined(MemberInfo, Type)

Určuje, zda jsou na zadaného člena použity vlastní atributy zadaného typu.

IsDefined(MemberInfo, Type, Boolean)

Určuje, zda se vlastní atributy zadaného typu použijí na zadaného člena a volitelně se použijí na jeho předky.

GetMetadataToken(MemberInfo)

Získá token metadat pro daného člena, pokud je k dispozici.

HasMetadataToken(MemberInfo)

Vrátí hodnotu, která označuje, zda je token metadat k dispozici pro zadaného člena.

Platí pro