FieldBuilder Třída

Definice

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

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
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ískání instance FieldBuilder voláním DefineField, DefineInitializedDatanebo DefineUninitializedData.

Note

Metoda SetValue se v současné době nepodporuje. Jako alternativní řešení načtěte FieldInfo ho tak, že se zamyslíte nad dokončeným typem a voláním SetValue , které nastaví hodnotu pole.

Konstruktory

Name Description
FieldBuilder()

Inicializuje novou instanci FieldBuilder třídy.

Vlastnosti

Name Description
Attributes

Označuje atributy tohoto pole. Tato vlastnost je pouze pro č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 pouze pro čtení.

FieldHandle

Označuje interní popisovač metadat pro toto pole. Tato vlastnost je pouze pro čtení.

FieldType

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

IsAssembly

Získá hodnotu určující, zda potenciální viditelnost tohoto pole je popsána Assembly; to 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 tento MemberInfo objekt odkazuje na jedno nebo více sestavení uložených v collectible AssemblyLoadContext.

(Zděděno od MemberInfo)
IsFamily

Získá hodnotu určující, zda viditelnost tohoto pole je popsána Family; to 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 určující, zda viditelnost tohoto pole je popsána FamANDAssem; to 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 určující, zda potenciální viditelnost tohoto pole je popsána FamORAssem; to znamená, že pole lze získat přístup pomocí odvozených tříd bez ohledu na to, kde jsou, a podle tříd ve stejném sestavení.

(Zděděno od FieldInfo)
IsInitOnly

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

(Zděděno od FieldInfo)
IsLiteral

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

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

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

(Zděděno od FieldInfo)
IsPinvokeImpl

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

(Zděděno od FieldInfo)
IsPrivate

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

(Zděděno od FieldInfo)
IsPublic

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

(Zděděno od FieldInfo)
IsSecurityCritical

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

(Zděděno od FieldInfo)
IsSecuritySafeCritical

Získá hodnotu, která určuje, jestli je aktuální pole kritické pro zabezpečení na aktuální úrovni důvěryhodnosti.

(Zděděno od FieldInfo)
IsSecurityTransparent

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

(Zděděno od FieldInfo)
IsSpecialName

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

(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 prvek metadat.

(Zděděno od MemberInfo)
Module

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

Module

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

(Zděděno od MemberInfo)
Name

Označuje název tohoto pole. Tato vlastnost je pouze pro čtení.

ReflectedType

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

Metody

Name Description
Equals(Object)

Vrátí 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(Type, Boolean)

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

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í kód hash pro tuto instanci.

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

Získá upravený 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 polí.

(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.

MemberwiseClone()

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

(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í tvůrce vlastních atributů.

SetCustomAttributeCore(ConstructorInfo, ReadOnlySpan<Byte>)

Při přepsání v odvozené třídě nastaví vlastní atribut pro toto 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, BindingFlags, Binder, CultureInfo)

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

SetValue(Object, Object)

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í

Name Description
_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 pro tohoto člena, 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 pro tento člen, identifikovaný podle typu 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í

Name Description
GetCustomAttribute(MemberInfo, Type, Boolean)

Načte vlastní atribut zadaného typu, který se použije u zadaného členu, a volitelně zkontroluje předky daného člena.

GetCustomAttribute(MemberInfo, Type)

Načte vlastní atribut zadaného typu, který se použije na zadaný člen.

GetCustomAttribute<T>(MemberInfo, Boolean)

Načte vlastní atribut zadaného typu, který se použije u zadaného členu, a volitelně zkontroluje předky daného člena.

GetCustomAttribute<T>(MemberInfo)

Načte vlastní atribut zadaného typu, který se použije na zadaný člen.

GetCustomAttributes(MemberInfo, Boolean)

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

GetCustomAttributes(MemberInfo, Type, Boolean)

Načte kolekci vlastních atributů zadaného typu, které se použijí na zadaný člen, a volitelně zkontroluje nadřazené objekty daného člena.

GetCustomAttributes(MemberInfo, Type)

Načte kolekci vlastních atributů zadaného typu, které se použijí na zadaný člen.

GetCustomAttributes(MemberInfo)

Načte kolekci vlastních atributů, které se použijí na zadaný člen.

GetCustomAttributes<T>(MemberInfo, Boolean)

Načte kolekci vlastních atributů zadaného typu, které se použijí na zadaný člen, a volitelně zkontroluje nadřazené objekty daného člena.

GetCustomAttributes<T>(MemberInfo)

Načte kolekci vlastních atributů zadaného typu, které se použijí na zadaný člen.

GetMetadataToken(MemberInfo)

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

HasMetadataToken(MemberInfo)

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

IsDefined(MemberInfo, Type, Boolean)

Určuje, zda se vlastní atributy zadaného typu použijí na zadaný člen a volitelně se použijí na jeho nadřazené objekty.

IsDefined(MemberInfo, Type)

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

Platí pro