FieldBuilder Clase

Definición

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

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
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 llamando a DefineField, DefineInitializedDatao DefineUninitializedData.

Note

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

Propiedades

Nombre Description
Attributes

Indica los atributos de este campo. Esta propiedad es de solo lectura.

CustomAttributes

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

(Heredado de MemberInfo)
DeclaringType

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

FieldHandle

Indica el identificador de metadatos interno de este campo. Esta propiedad es de solo lectura.

FieldType

Indica el Type objeto que representa el tipo de este campo. Esta propiedad es de solo lectura.

IsAssembly

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

(Heredado de FieldInfo)
IsFamily

Obtiene un valor que indica si la visibilidad de este campo se describe mediante Family; es decir, el campo solo está visible dentro de su clase y clases derivadas.

(Heredado de FieldInfo)
IsFamilyAndAssembly

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

(Heredado de FieldInfo)
IsFamilyOrAssembly

Obtiene un valor que indica si la visibilidad potencial de este campo se describe mediante FamORAssem; es decir, las clases derivadas dondequiera que estén y las clases del mismo ensamblado pueden tener acceso al campo.

(Heredado de FieldInfo)
IsInitOnly

Obtiene un valor que indica si el campo solo 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 se puede cambiar.

(Heredado de FieldInfo)
IsNotSerialized

Obtiene un valor que indica si este campo tiene el NotSerialized atributo .

(Heredado de FieldInfo)
IsPinvokeImpl

Obtiene un valor que indica si el atributo correspondiente PinvokeImpl está establecido 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 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 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 correspondiente SpecialName se establece en el FieldAttributes enumerador.

(Heredado de FieldInfo)
IsStatic

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

(Heredado de FieldInfo)
MemberType

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

(Heredado de FieldInfo)
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 se define el tipo que declara el miembro representado por el actual MemberInfo .

(Heredado de MemberInfo)
Name

Indica el nombre de este campo. Esta propiedad es de solo lectura.

ReflectedType

Indica la referencia al objeto desde el Type que se obtuvo este objeto. Esta propiedad es de solo lectura.

Métodos

Nombre Description
Equals(Object)

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

(Heredado de FieldInfo)
GetCustomAttributes(Boolean)

Devuelve todos los atributos personalizados definidos para este campo.

GetCustomAttributes(Type, Boolean)

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

GetCustomAttributesData()

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

(Heredado de MemberInfo)
GetHashCode()

Devuelve el código hash de esta instancia.

(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 por 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 token que representa este campo.

GetType()

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

(Heredado de FieldInfo)
GetValue(Object)

Recupera el valor del campo admitido por el objeto especificado.

GetValueDirect(TypedReference)

Devuelve el valor de un campo admitido por un objeto determinado.

(Heredado de FieldInfo)
HasSameMetadataDefinitionAs(MemberInfo)

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

(Heredado de MemberInfo)
IsDefined(Type, Boolean)

Indica si un atributo que tiene el tipo especificado se define en un campo.

MemberwiseClone()

Crea una copia superficial del Objectactual.

(Heredado de Object)
SetConstant(Object)

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

SetMarshal(UnmanagedMarshal)
Obsoletos.

Describe la serialización nativa del campo.

SetOffset(Int32)

Especifica el diseño del campo.

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

Establece el valor del campo admitido por el objeto especificado.

SetValue(Object, Object)

Establece el valor del campo admitido por el objeto especificado.

(Heredado de FieldInfo)
SetValueDirect(TypedReference, Object)

Establece el valor del campo admitido por el objeto especificado.

(Heredado de FieldInfo)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Implementaciones de interfaz explícitas

Nombre Description
_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 propiedades y 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 Type objeto que representa el FieldInfo tipo.

(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 propiedades y 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()

Obtiene un Type objeto que representa la MemberInfo clase .

(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 propiedades y métodos expuestos por un objeto .

(Heredado de MemberInfo)

Métodos de extensión

Nombre Description
GetCustomAttribute(MemberInfo, Type, Boolean)

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

GetCustomAttribute(MemberInfo, Type)

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

GetCustomAttribute<T>(MemberInfo, Boolean)

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

GetCustomAttribute<T>(MemberInfo)

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

GetCustomAttributes(MemberInfo, Boolean)

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

GetCustomAttributes(MemberInfo, Type, Boolean)

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

GetCustomAttributes(MemberInfo, Type)

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

GetCustomAttributes(MemberInfo)

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

GetCustomAttributes<T>(MemberInfo, Boolean)

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

GetCustomAttributes<T>(MemberInfo)

Recupera una colección de atributos personalizados de un tipo especificado que se aplica 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.

IsDefined(MemberInfo, Type)

Indica si los atributos personalizados de un tipo especificado se aplican a un miembro especificado.

Se aplica a