FieldBuilder Classe

Definição

Define e representa um corpo. Esta 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 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.

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)
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

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

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

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 a organização nativa do campo.

SetOffset(Int32)

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)

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.

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