FieldBuilder Classe

Definição

Define e representa um corpo. Esta classe não pode ser herdada.

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
Herança
FieldBuilder
Atributos
Implementações

Exemplos

O exemplo seguinte ilustra a utilização da FieldBuilder classe.

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

Observações

Obtém uma instância de FieldBuilder chamando DefineField, DefineInitializedData, ou DefineUninitializedData.

Note

O SetValue método atualmente não é suportado. Como solução alternativa, recupera o FieldInfo refletindo sobre o tipo e a chamada SetValue finalizados para definir o valor do campo.

Construtores

Name Description
FieldBuilder()

Inicializa uma nova instância da FieldBuilder classe.

Propriedades

Name Description
Attributes

Indica as características deste campo. Esta propriedade é somente leitura.

CustomAttributes

Obtém uma coleção que contém os atributos personalizados deste membro.

(Herdado de MemberInfo)
DeclaringType

Indica uma referência ao Type objeto para o tipo que declara este campo. Esta propriedade é somente leitura.

FieldHandle

Indica o controlo interno de metadados para este campo. Esta propriedade é somente leitura.

FieldType

Indica o Type objeto que representa o tipo deste campo. Esta propriedade é somente leitura.

IsAssembly

Obtém um valor que indica se a visibilidade potencial deste campo é descrita por Assembly; ou seja, o campo é visível no máximo para outros tipos na mesma montagem, e não é visível para tipos derivados fora da montagem.

(Herdado de FieldInfo)
IsCollectible

Obtém um valor que indica se este MemberInfo objeto faz referência a uma ou mais assemblagens mantidas num colecionável AssemblyLoadContext.

(Herdado de MemberInfo)
IsFamily

Obtém um valor que indica se a visibilidade deste campo é descrita por Family; ou seja, o campo é visível apenas dentro da sua classe e das classes derivadas.

(Herdado de FieldInfo)
IsFamilyAndAssembly

Obtém um valor que indica se a visibilidade deste campo é descrita por FamANDAssem; ou seja, o campo pode ser acedido a partir de classes derivadas, mas apenas se estiverem na mesma assembleia.

(Herdado de FieldInfo)
IsFamilyOrAssembly

Obtém um valor que indica se a visibilidade potencial deste campo é descrita por FamORAssem; isto é, o campo pode ser acedido por classes derivadas onde quer que estejam, e por classes na mesma assembleia.

(Herdado de FieldInfo)
IsInitOnly

Obtém um valor que indica se o corpo só pode ser definido no corpo do construtor.

(Herdado de FieldInfo)
IsLiteral

Recebe um valor que indica se o valor está escrito em tempo de compilação e não pode ser alterado.

(Herdado de FieldInfo)
IsNotSerialized
Obsoleto.

Obtém um valor que indica se este campo tem o NotSerialized atributo.

(Herdado de FieldInfo)
IsPinvokeImpl

Obtém um valor que indica se o atributo correspondente PinvokeImpl está definido em FieldAttributes.

(Herdado de FieldInfo)
IsPrivate

Recebe um valor que indica se o campo é privado.

(Herdado de FieldInfo)
IsPublic

Recebe um valor que indica se o campo é público.

(Herdado de FieldInfo)
IsSecurityCritical

Obtém um valor que indica se o campo atual é crítico para segurança ou para segurança ao nível de confiança atual.

(Herdado de FieldInfo)
IsSecuritySafeCritical

Obtém um valor que indica se o campo atual é crítico de segurança ao nível de confiança atual.

(Herdado de FieldInfo)
IsSecurityTransparent

Obtém um valor que indica se o campo atual é transparente ao nível de confiança atual.

(Herdado de FieldInfo)
IsSpecialName

Obtém um valor que indica se o atributo correspondente SpecialName está definido no FieldAttributes enumerador.

(Herdado de FieldInfo)
IsStatic

Obtém um valor que indica se o campo é estático.

(Herdado de FieldInfo)
MemberType

Obtém um MemberTypes valor que indica que este membro é um campo.

(Herdado de FieldInfo)
MetadataToken

Recebe um token que identifica o módulo dinâmico atual nos metadados.

MetadataToken

Obtém um valor que identifica um elemento de metadados.

(Herdado de MemberInfo)
Module

Obtém o módulo em que o tipo que contém este campo está a ser definido.

Module

Obtém o módulo em que o tipo que declara o elemento representado pela corrente MemberInfo está definido.

(Herdado de MemberInfo)
Name

Indica o nome deste campo. Esta propriedade é somente leitura.

ReflectedType

Indica a referência ao Type objeto de onde este objeto foi obtido. Esta propriedade é somente leitura.

Métodos

Name Description
Equals(Object)

Devolve um valor que indica se esta instância é igual a um objeto especificado.

(Herdado de FieldInfo)
GetCustomAttributes(Boolean)

Devolve todos os atributos personalizados definidos para este campo.

GetCustomAttributes(Type, Boolean)

Devolve todos os atributos personalizados definidos para este campo identificados pelo tipo dado.

GetCustomAttributesData()

Devolve uma lista de CustomAttributeData objetos que representam dados sobre os atributos que foram aplicados ao membro alvo.

(Herdado de MemberInfo)
GetHashCode()

Devolve o código de hash para esta instância.

(Herdado de FieldInfo)
GetModifiedFieldType()

Obtém o tipo modificado deste objeto de campo.

(Herdado de FieldInfo)
GetOptionalCustomModifiers()

Recebe um conjunto de tipos que identificam os modificadores personalizados opcionais do campo.

(Herdado de FieldInfo)
GetRawConstantValue()

Devolve um valor literal associado ao campo por um compilador.

(Herdado de FieldInfo)
GetRequiredCustomModifiers()

Obtém um array de tipos que identificam os modificadores personalizados necessários da propriedade.

(Herdado de FieldInfo)
GetToken()

Devolve o token que representa este campo.

GetType()

Descobre os atributos de um campo de classe e fornece acesso a metadados do campo.

(Herdado de FieldInfo)
GetValue(Object)

Recupera o valor do campo suportado pelo objeto dado.

GetValueDirect(TypedReference)

Devolve o valor de um campo suportado por um dado objeto.

(Herdado de FieldInfo)
HasSameMetadataDefinitionAs(MemberInfo)

Define e representa um corpo. Esta classe não pode ser herdada.

(Herdado de MemberInfo)
IsDefined(Type, Boolean)

Indica se um atributo com o tipo especificado está definido num campo.

MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
SetConstant(Object)

Define o valor padrão deste campo.

SetConstantCore(Object)

Quando sobrescrito numa classe derivada, define o valor padrão deste campo.

SetCustomAttribute(ConstructorInfo, Byte[])

Define um atributo personalizado usando um blob de atributo personalizado especificado.

SetCustomAttribute(CustomAttributeBuilder)

Define um atributo personalizado usando um construtor de atributos personalizado.

SetCustomAttributeCore(ConstructorInfo, ReadOnlySpan<Byte>)

Quando sobrescrito numa classe derivada, define um atributo personalizado nessa assembleia.

SetMarshal(UnmanagedMarshal)
Obsoleto.

Descreve a organização nativa do campo.

SetOffset(Int32)

Especifica a disposição do campo.

SetOffsetCore(Int32)

Quando sobrescrito numa classe derivada, especifica a disposição do campo.

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

Define o valor do campo suportado pelo objeto dado.

SetValue(Object, Object)

Define o valor do campo suportado pelo objeto dado.

(Herdado de FieldInfo)
SetValueDirect(TypedReference, Object)

Define o valor do campo suportado pelo objeto dado.

(Herdado de FieldInfo)
ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Implementações de Interface Explícita

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

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de despacho.

_FieldBuilder.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera as informações de tipo de um objeto, que podem ser usadas para obter as informações de tipo para uma interface.

_FieldBuilder.GetTypeInfoCount(UInt32)

Recupera o número de interfaces de informações de tipo que um objeto fornece (0 ou 1).

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

Proporciona acesso a propriedades e métodos expostos por um objeto.

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

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de despacho.

(Herdado de FieldInfo)
_FieldInfo.GetType()

Obtém um Type objeto que represente o FieldInfo tipo.

(Herdado de FieldInfo)
_FieldInfo.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera as informações de tipo de um objeto, que podem ser usadas para obter as informações de tipo para uma interface.

(Herdado de FieldInfo)
_FieldInfo.GetTypeInfoCount(UInt32)

Recupera o número de interfaces de informações de tipo que um objeto fornece (0 ou 1).

(Herdado de FieldInfo)
_FieldInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Proporciona acesso a propriedades e métodos expostos por um objeto.

(Herdado de FieldInfo)
_MemberInfo.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de despacho.

(Herdado de MemberInfo)
_MemberInfo.GetType()

Obtém um Type objeto que representa a MemberInfo classe.

(Herdado de MemberInfo)
_MemberInfo.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera as informações de tipo de um objeto, que podem ser usadas para obter as informações de tipo para uma interface.

(Herdado de MemberInfo)
_MemberInfo.GetTypeInfoCount(UInt32)

Recupera o número de interfaces de informações de tipo que um objeto fornece (0 ou 1).

(Herdado de MemberInfo)
_MemberInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Proporciona acesso a propriedades e métodos expostos por um objeto.

(Herdado de MemberInfo)
ICustomAttributeProvider.GetCustomAttributes(Boolean)

Devolve um array de todos os atributos personalizados definidos neste membro, excluindo atributos nomeados, ou um array vazio se não existirem atributos personalizados.

(Herdado de MemberInfo)
ICustomAttributeProvider.GetCustomAttributes(Type, Boolean)

Devolve um array de atributos personalizados definidos neste membro, identificados pelo tipo, ou um array vazio se não existirem atributos personalizados desse tipo.

(Herdado de MemberInfo)
ICustomAttributeProvider.IsDefined(Type, Boolean)

Indica se uma ou mais instâncias de attributeType estão definidas neste membro.

(Herdado de MemberInfo)

Métodos da Extensão

Name Description
GetCustomAttribute(MemberInfo, Type, Boolean)

Recupera um atributo personalizado de um tipo especificado que é aplicado a um membro especificado e, opcionalmente, inspeciona os antepassados desse membro.

GetCustomAttribute(MemberInfo, Type)

Recupera um atributo personalizado de um tipo especificado que é aplicado a um membro especificado.

GetCustomAttribute<T>(MemberInfo, Boolean)

Recupera um atributo personalizado de um tipo especificado que é aplicado a um membro especificado e, opcionalmente, inspeciona os antepassados desse membro.

GetCustomAttribute<T>(MemberInfo)

Recupera um atributo personalizado de um tipo especificado que é aplicado a um membro especificado.

GetCustomAttributes(MemberInfo, Boolean)

Recupera uma coleção de atributos personalizados que são aplicados a um membro especificado e, opcionalmente, inspeciona os antepassados desse membro.

GetCustomAttributes(MemberInfo, Type, Boolean)

Recupera uma coleção de atributos personalizados de um tipo especificado que são aplicados a um membro especificado e, opcionalmente, inspeciona os antepassados desse membro.

GetCustomAttributes(MemberInfo, Type)

Recupera uma coleção de atributos personalizados de um tipo especificado que são aplicados a um membro especificado.

GetCustomAttributes(MemberInfo)

Recupera uma coleção de atributos personalizados que são aplicados a um membro especificado.

GetCustomAttributes<T>(MemberInfo, Boolean)

Recupera uma coleção de atributos personalizados de um tipo especificado que são aplicados a um membro especificado e, opcionalmente, inspeciona os antepassados desse membro.

GetCustomAttributes<T>(MemberInfo)

Recupera uma coleção de atributos personalizados de um tipo especificado que são aplicados a um membro especificado.

GetMetadataToken(MemberInfo)

Recebe um token de metadados para o membro em questão, se disponível.

HasMetadataToken(MemberInfo)

Devolve um valor que indica se existe um token de metadados disponível para o membro especificado.

IsDefined(MemberInfo, Type, Boolean)

Indica se atributos personalizados de um tipo especificado são aplicados a um membro especificado e, opcionalmente, aplicados aos seus antecessores.

IsDefined(MemberInfo, Type)

Indica se atributos personalizados de um tipo especificado são aplicados a um membro especificado.

Aplica-se a