FieldBuilder Classe

Definição

Define e representa um campo. Essa classe não pode ser herdada.

public ref class FieldBuilder sealed : System::Reflection::FieldInfo, System::Runtime::InteropServices::_FieldBuilder
public ref class FieldBuilder sealed : 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
public sealed class FieldBuilder : System.Reflection.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
type FieldBuilder = class
    inherit FieldInfo
Public NotInheritable Class FieldBuilder
Inherits FieldInfo
Implements _FieldBuilder
Public NotInheritable Class FieldBuilder
Inherits FieldInfo
Herança
FieldBuilder
Atributos
Implementações

Exemplos

O exemplo a seguir ilustra o uso 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

Comentários

Obter uma instância de FieldBuilder chamando DefineField, DefineInitializedDataou DefineUninitializedData.

Note

No SetValue momento, não há suporte para o método. Como uma solução alternativa, recupere o FieldInfo refletindo sobre o tipo concluído e a chamada SetValue para definir o valor do campo.

Propriedades

Nome Description
Attributes

Indica os atributos desse campo. Esta propriedade é somente para leitura.

CustomAttributes

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

(Herdado de MemberInfo)
DeclaringType

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

FieldHandle

Indica o identificador de metadados interno para esse campo. Esta propriedade é somente para leitura.

FieldType

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

IsAssembly

Obtém um valor que indica se a visibilidade potencial desse campo é descrita por Assembly; ou seja, o campo é visível no máximo para outros tipos no mesmo assembly e não é visível para tipos derivados fora do assembly.

(Herdado de FieldInfo)
IsFamily

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

(Herdado de FieldInfo)
IsFamilyAndAssembly

Obtém um valor que indica se a visibilidade desse campo é descrita por FamANDAssem; ou seja, o campo pode ser acessado de classes derivadas, mas somente se estiverem no mesmo assembly.

(Herdado de FieldInfo)
IsFamilyOrAssembly

Obtém um valor que indica se a visibilidade potencial desse campo é descrita por FamORAssem; ou seja, o campo pode ser acessado por classes derivadas onde quer que estejam e por classes no mesmo assembly.

(Herdado de FieldInfo)
IsInitOnly

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

(Herdado de FieldInfo)
IsLiteral

Obtém um valor que indica se o valor é gravado em tempo de compilação e não pode ser alterado.

(Herdado de FieldInfo)
IsNotSerialized

Obtém um valor que indica se esse 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

Obtém um valor que indica se o campo é privado.

(Herdado de FieldInfo)
IsPublic

Obtém 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 à segurança ou à segurança crítico no 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 no nível de confiança atual.

(Herdado de FieldInfo)
IsSecurityTransparent

Obtém um valor que indica se o campo atual é transparente no 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 esse membro é um campo.

(Herdado de FieldInfo)
MetadataToken

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

(Herdado de MemberInfo)
Module

Obtém o módulo no qual o tipo que contém esse campo está sendo definido.

Module

Obtém o módulo no qual o tipo que declara o membro representado pela corrente MemberInfo é definido.

(Herdado de MemberInfo)
Name

Indica o nome desse campo. Esta propriedade é somente para leitura.

ReflectedType

Indica a referência ao Type objeto do qual esse objeto foi obtido. Esta propriedade é somente para leitura.

Métodos

Nome Description
Equals(Object)

Retorna um valor que indica se essa instância é igual a um objeto especificado.

(Herdado de FieldInfo)
GetCustomAttributes(Boolean)

Retorna todos os atributos personalizados definidos para esse campo.

GetCustomAttributes(Type, Boolean)

Retorna todos os atributos personalizados definidos para esse campo identificado pelo tipo fornecido.

GetCustomAttributesData()

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

(Herdado de MemberInfo)
GetHashCode()

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

(Herdado de FieldInfo)
GetOptionalCustomModifiers()

Obtém uma matriz de tipos que identificam os modificadores personalizados opcionais do campo.

(Herdado de FieldInfo)
GetRawConstantValue()

Retorna um valor literal associado ao campo por um compilador.

(Herdado de FieldInfo)
GetRequiredCustomModifiers()

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

(Herdado de FieldInfo)
GetToken()

Retorna o token que representa esse campo.

GetType()

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

(Herdado de FieldInfo)
GetValue(Object)

Recupera o valor do campo compatível com o objeto fornecido.

GetValueDirect(TypedReference)

Retorna o valor de um campo com suporte por um determinado objeto.

(Herdado de FieldInfo)
HasSameMetadataDefinitionAs(MemberInfo)

Define e representa um campo. Essa classe não pode ser herdada.

(Herdado de MemberInfo)
IsDefined(Type, Boolean)

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

MemberwiseClone()

Cria uma cópia superficial do Objectatual.

(Herdado de Object)
SetConstant(Object)

Define o valor padrão desse 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.

SetMarshal(UnmanagedMarshal)
Obsoleto.

Descreve o marshaling nativo do campo.

SetOffset(Int32)

Especifica o layout do campo.

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

Define o valor do campo compatível com o objeto fornecido.

SetValue(Object, Object)

Define o valor do campo compatível com o objeto fornecido.

(Herdado de FieldInfo)
SetValueDirect(TypedReference, Object)

Define o valor do campo compatível com o objeto fornecido.

(Herdado de FieldInfo)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Implantações explícitas de interface

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

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de expedição.

_FieldBuilder.GetTypeInfo(UInt32, UInt32, IntPtr)

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

_FieldBuilder.GetTypeInfoCount(UInt32)

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

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

Fornece 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 expedição.

(Herdado de FieldInfo)
_FieldInfo.GetType()

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

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

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

(Herdado de FieldInfo)
_FieldInfo.GetTypeInfoCount(UInt32)

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

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

Fornece 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 expedição.

(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 do tipo de um objeto, que podem ser usadas para obter informações de tipo para uma interface.

(Herdado de MemberInfo)
_MemberInfo.GetTypeInfoCount(UInt32)

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

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

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

(Herdado de MemberInfo)

Métodos de Extensão

Nome Description
GetCustomAttribute(MemberInfo, Type, Boolean)

Recupera um atributo personalizado de um tipo especificado que é aplicado a um membro especificado e, opcionalmente, inspeciona os ancestrais 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 ancestrais 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 ancestrais 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 ancestrais 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 ancestrais desse membro.

GetCustomAttributes<T>(MemberInfo)

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

IsDefined(MemberInfo, Type, Boolean)

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

IsDefined(MemberInfo, Type)

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

Aplica-se a