Compartir a través de


FieldBuilder Clase

Definición

Define y representa a un campo. Esta clase no puede heredarse.

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
Herencia
FieldBuilder
Atributos
Implementaciones

Ejemplos

En el ejemplo siguiente se muestra el uso de la FieldBuilder clase .

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

Comentarios

Obtenga una instancia de FieldBuilder mediante una llamada a DefineField, DefineInitializedDatao DefineUninitializedData.

Nota

El SetValue método no se admite actualmente. Como solución alternativa, recupere mediante la FieldInfo reflexión sobre el tipo terminado y llame SetValue a para establecer el valor del campo.

Constructores

FieldBuilder()

Inicializa una nueva instancia de la clase FieldBuilder.

Propiedades

Attributes

Indica los atributos de este campo. Esta propiedad es de sólo lectura.

CustomAttributes

Obtiene una colección que contiene los atributos personalizados de este miembro.

(Heredado de MemberInfo)
DeclaringType

Indica una referencia al objeto Type para el tipo que declara este campo. Esta propiedad es de sólo lectura.

FieldHandle

Indica el identificador interno de metadatos para este campo. Esta propiedad es de sólo lectura.

FieldHandle

Obtiene una estructura RuntimeFieldHandle, que es un identificador para la representación interna de los metadatos de un campo.

(Heredado de FieldInfo)
FieldType

Indica el objeto Type que representa al tipo de este campo. Esta propiedad es de sólo lectura.

IsAssembly

Obtiene un valor que indica si Assembly describe la visibilidad posible de este campo; es decir, el campo es visible como mucho para otros tipos del mismo ensamblado y no es visible para los tipos derivados fuera del ensamblado.

(Heredado de FieldInfo)
IsCollectible

Obtiene un valor que indica si este objeto MemberInfo forma parte de un ensamblado contenido en un AssemblyLoadContext recopilable.

(Heredado de MemberInfo)
IsFamily

Obtiene un valor que indica si Family describe la visibilidad de este campo; es decir, el campo sólo es visible dentro de su clase y clases derivadas.

(Heredado de FieldInfo)
IsFamilyAndAssembly

Obtiene un valor que indica si FamANDAssem describe la visibilidad de este campo; es decir, se puede tener acceso al campo desde clases derivadas, pero sólo si están en el mismo ensamblado.

(Heredado de FieldInfo)
IsFamilyOrAssembly

Obtiene un valor que indica si FamORAssem describe la visibilidad posible de este campo; es decir, las clases derivadas pueden tener acceso al campo con independencia de dónde se encuentren, así como las clases del mismo ensamblado.

(Heredado de FieldInfo)
IsInitOnly

Obtiene un valor que indica si el campo sólo se puede establecer en el cuerpo del constructor.

(Heredado de FieldInfo)
IsLiteral

Obtiene un valor que indica si el valor se escribe en tiempo de compilación y no puede cambiarse.

(Heredado de FieldInfo)
IsNotSerialized
Obsoletos.

Obtiene un valor que indica si este campo dispone del atributo NotSerialized.

(Heredado de FieldInfo)
IsPinvokeImpl

Obtiene un valor que indica si el atributo PinvokeImpl correspondiente está definido en FieldAttributes.

(Heredado de FieldInfo)
IsPrivate

Obtiene un valor que indica si el campo es privado.

(Heredado de FieldInfo)
IsPublic

Obtiene un valor que indica si el campo es público.

(Heredado de FieldInfo)
IsSecurityCritical

Obtiene un valor que indica si el campo actual es crítico para la seguridad o crítico para la seguridad y disponible desde código transparente en el nivel de confianza actual.

(Heredado de FieldInfo)
IsSecuritySafeCritical

Obtiene un valor que indica si el campo actual es crítico para la seguridad y disponible desde código transparente en el nivel de confianza actual.

(Heredado de FieldInfo)
IsSecurityTransparent

Obtiene un valor que indica si el campo actual es transparente en el nivel de confianza actual.

(Heredado de FieldInfo)
IsSpecialName

Obtiene un valor que indica si el atributo SpecialName correspondiente está definido en el enumerador FieldAttributes.

(Heredado de FieldInfo)
IsStatic

Obtiene un valor que indica si el campo es estático.

(Heredado de FieldInfo)
MemberType

Obtiene un valor de MemberTypes que indica que este miembro es un campo.

(Heredado de FieldInfo)
MetadataToken

Obtiene un token que identifica el módulo dinámico actual en los metadatos.

MetadataToken

Obtiene un valor que identifica un elemento de metadatos.

(Heredado de MemberInfo)
Module

Obtiene el módulo en el que se define el tipo que contiene este campo.

Module

Obtiene el módulo en el que el tipo que declara el miembro representado por el objeto MemberInfo actual está definido.

(Heredado de MemberInfo)
Name

Indica el nombre de este campo. Esta propiedad es de sólo lectura.

ReflectedType

Indica la referencia al objeto Type del que se obtuvo este objeto. Esta propiedad es de sólo lectura.

ReflectedType

Obtiene el objeto de la clase utilizado para obtener esta instancia de MemberInfo.

(Heredado de MemberInfo)

Métodos

Equals(Object)

Devuelve un valor que indica si esta instancia es igual que un objeto especificado.

(Heredado de FieldInfo)
GetCustomAttributes(Boolean)

Devuelve los atributos personalizados definidos para este campo.

GetCustomAttributes(Boolean)

Cuando se reemplaza en una clase derivada, devuelve una matriz de todos los atributos personalizados aplicados a este miembro.

(Heredado de MemberInfo)
GetCustomAttributes(Type, Boolean)

Devuelve todos los atributos personalizados definidos para este campo identificado por el tipo dado.

GetCustomAttributes(Type, Boolean)

Cuando se invalida en una clase derivada, devuelve una matriz de atributos personalizados aplicados a este miembro e identificado por Type.

(Heredado de MemberInfo)
GetCustomAttributesData()

Devuelve una lista de objetos CustomAttributeData que representan datos sobre los atributos que se aplicaron al miembro de destino.

(Heredado de MemberInfo)
GetHashCode()

Devuelve el código hash de esta instancia.

(Heredado de FieldInfo)
GetModifiedFieldType()

Obtiene el tipo modificado de este objeto de campo.

(Heredado de FieldInfo)
GetOptionalCustomModifiers()

Obtiene una matriz de tipos que identifican los modificadores personalizados opcionales del campo.

(Heredado de FieldInfo)
GetRawConstantValue()

Devuelve un valor literal asociado al campo mediante un compilador.

(Heredado de FieldInfo)
GetRequiredCustomModifiers()

Obtiene una matriz de tipos que identifican los modificadores personalizados necesarios de la propiedad.

(Heredado de FieldInfo)
GetToken()

Devuelve el símbolo (token) que representa a este campo.

GetType()

Detecta los atributos de un campo de clase y proporciona acceso a sus metadatos.

(Heredado de FieldInfo)
GetValue(Object)

Recupera el valor del campo compatible con el objeto dado.

GetValueDirect(TypedReference)

Devuelve el valor de un campo compatible con un objeto dado.

(Heredado de FieldInfo)
HasSameMetadataDefinitionAs(MemberInfo)

Define y representa a un campo. Esta clase no puede heredarse.

(Heredado de MemberInfo)
IsDefined(Type, Boolean)

Indica si un atributo que tenga el tipo especificado, aparece definido en un campo.

IsDefined(Type, Boolean)

Cuando se reemplaza en una clase derivada, indica si se aplican a este miembro uno o más atributos del tipo especificado o de sus tipos derivados.

(Heredado de MemberInfo)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
SetConstant(Object)

Establece el valor predeterminado de este campo.

SetConstantCore(Object)

Cuando se invalida en una clase derivada, establece el valor predeterminado de este campo.

SetCustomAttribute(ConstructorInfo, Byte[])

Establece un atributo personalizado mediante un blob de atributo personalizado especificado.

SetCustomAttribute(CustomAttributeBuilder)

Establece un atributo personalizado mediante un generador de atributos personalizado.

SetCustomAttributeCore(ConstructorInfo, ReadOnlySpan<Byte>)

Cuando se reemplaza en una clase derivada, establece un atributo personalizado en este ensamblado.

SetMarshal(UnmanagedMarshal)
Obsoletos.

Describe el cálculo de referencias nativo del campo.

SetOffset(Int32)

Especifica el diseño del campo.

SetOffsetCore(Int32)

Cuando se reemplaza en una clase derivada, especifica el diseño del campo.

SetValue(Object, Object)

Establece el valor del campo admitido por el objeto determinado.

(Heredado de FieldInfo)
SetValue(Object, Object, BindingFlags, Binder, CultureInfo)

Establece el valor del campo admitido por el objeto determinado.

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

Cuando se reemplaza en una clase derivada, se establece el valor del campo compatible con el objeto dado.

(Heredado de FieldInfo)
SetValueDirect(TypedReference, Object)

Establece el valor del campo admitido por el objeto determinado.

(Heredado de FieldInfo)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Implementaciones de interfaz explícitas

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

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.

_FieldBuilder.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera la información de tipo de un objeto, que se puede usar después para obtener la información de tipo de una interfaz.

_FieldBuilder.GetTypeInfoCount(UInt32)

Recupera el número de interfaces de información de tipo que proporciona un objeto (0 ó 1).

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

Proporciona acceso a las propiedades y los métodos expuestos por un objeto.

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

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.

(Heredado de FieldInfo)
_FieldInfo.GetType()

Obtiene un objeto Type que representa el tipo de FieldInfo.

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

Recupera la información de tipo de un objeto, que se puede usar después para obtener la información de tipo de una interfaz.

(Heredado de FieldInfo)
_FieldInfo.GetTypeInfoCount(UInt32)

Recupera el número de interfaces de información de tipo que proporciona un objeto (0 ó 1).

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

Proporciona acceso a las propiedades y los métodos expuestos por un objeto.

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

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.

(Heredado de MemberInfo)
_MemberInfo.GetType()

Objeto Type que representa la clase MemberInfo.

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

Recupera la información de tipo de un objeto, que se puede usar después para obtener la información de tipo de una interfaz.

(Heredado de MemberInfo)
_MemberInfo.GetTypeInfoCount(UInt32)

Recupera el número de interfaces de información de tipo que proporciona un objeto (0 ó 1).

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

Proporciona acceso a las propiedades y los métodos expuestos por un objeto.

(Heredado de MemberInfo)
ICustomAttributeProvider.GetCustomAttributes(Boolean)

Devuelve una matriz de todos los atributos personalizados definidos en este miembro, excluidos los atributos con nombre, o una matriz vacía si no hay atributos personalizados.

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

Devuelve una matriz de atributos personalizados definidos en este miembro, identificados por tipo, o una matriz vacía si no hay atributos personalizados de ese tipo.

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

Indica si una o más instancias de attributeType se definen en este miembro.

(Heredado de MemberInfo)

Métodos de extensión

GetCustomAttribute(MemberInfo, Type)

Recupera un atributo personalizado de un tipo especificado que se aplica a un miembro concreto.

GetCustomAttribute(MemberInfo, Type, Boolean)

Recupera un atributo personalizado de un tipo especificado que se aplica a un miembro concreto y, opcionalmente, inspecciona los antecesores de dicho miembro.

GetCustomAttribute<T>(MemberInfo)

Recupera un atributo personalizado de un tipo especificado que se aplica a un miembro concreto.

GetCustomAttribute<T>(MemberInfo, Boolean)

Recupera un atributo personalizado de un tipo especificado que se aplica a un miembro concreto y, opcionalmente, inspecciona los antecesores de dicho miembro.

GetCustomAttributes(MemberInfo)

Recupera una colección de atributos personalizados que se aplican a un miembro especificado.

GetCustomAttributes(MemberInfo, Boolean)

Recupera una colección de atributos personalizados que se aplican a un miembro concreto y, opcionalmente, inspecciona los antecesores de dicho miembro.

GetCustomAttributes(MemberInfo, Type)

Recupera una colección de atributos personalizados de un tipo especificado que se aplican a un miembro concreto.

GetCustomAttributes(MemberInfo, Type, Boolean)

Recupera una colección de atributos personalizados de un tipo especificado que se aplican a un miembro concreto y, opcionalmente, inspecciona los antecesores de dicho miembro.

GetCustomAttributes<T>(MemberInfo)

Recupera una colección de atributos personalizados de un tipo especificado que se aplican a un miembro concreto.

GetCustomAttributes<T>(MemberInfo, Boolean)

Recupera una colección de atributos personalizados de un tipo especificado que se aplican a un miembro concreto y, opcionalmente, inspecciona los antecesores de dicho miembro.

IsDefined(MemberInfo, Type)

Indica si se deben aplicar atributos personalizados de un tipo especificado a un miembro especificado.

IsDefined(MemberInfo, Type, Boolean)

Indica si los atributos personalizados de un tipo especificado se aplican a un miembro especificado y, opcionalmente, se aplican a sus antecesores.

GetMetadataToken(MemberInfo)

Obtiene un token de metadatos del miembro determinado, si está disponible.

HasMetadataToken(MemberInfo)

Devuelve un valor que indica si un token de metadatos está disponible para el miembro especificado.

Se aplica a