Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

FieldBuilder (Clase)

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

Espacio de nombres:  System.Reflection.Emit
Ensamblado:  mscorlib (en mscorlib.dll)

[ComVisibleAttribute(true)]
[ClassInterfaceAttribute(ClassInterfaceType.None)]
[HostProtectionAttribute(SecurityAction.LinkDemand, MayLeakOnAbort = true)]
public sealed class FieldBuilder : FieldInfo, 
	_FieldBuilder

El tipo FieldBuilder expone los siguientes miembros.

  NombreDescripción
Propiedad públicaAttributesIndica los atributos de este campo. Esta propiedad es de sólo lectura. (Invalida a FieldInfo.Attributes).
Propiedad públicaCustomAttributesObtiene una colección que contiene los atributos personalizados de este miembro. (Se hereda de MemberInfo).
Propiedad públicaDeclaringTypeIndica una referencia al objeto Type para el tipo que declara este campo. Esta propiedad es de sólo lectura. (Invalida a MemberInfo.DeclaringType).
Propiedad públicaFieldHandleIndica el identificador interno de metadatos para este campo. Esta propiedad es de sólo lectura. (Invalida a FieldInfo.FieldHandle).
Propiedad públicaFieldTypeIndica el objeto Type que representa al tipo de este campo. Esta propiedad es de sólo lectura. (Invalida a FieldInfo.FieldType).
Propiedad públicaIsAssemblyObtiene un valor que indica si FieldAttributes.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. (Se hereda de FieldInfo).
Propiedad públicaIsFamilyObtiene un valor que indica si FieldAttributes.Family describe la visibilidad de este campo; es decir, el campo sólo es visible dentro de su clase y clases derivadas. (Se hereda de FieldInfo).
Propiedad públicaIsFamilyAndAssemblyObtiene un valor que indica si FieldAttributes.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. (Se hereda de FieldInfo).
Propiedad públicaIsFamilyOrAssemblyObtiene un valor que indica si FieldAttributes.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. (Se hereda de FieldInfo).
Propiedad públicaIsInitOnlyObtiene un valor que indica si el campo sólo se puede establecer en el cuerpo del constructor. (Se hereda de FieldInfo).
Propiedad públicaIsLiteralObtiene un valor que indica si el valor se escribe en tiempo de compilación y no puede cambiarse. (Se hereda de FieldInfo).
Propiedad públicaIsNotSerializedObtiene un valor que indica si este campo dispone del atributo NotSerialized. (Se hereda de FieldInfo).
Propiedad públicaIsPinvokeImplObtiene un valor que indica si el atributo PinvokeImpl correspondiente está definido en FieldAttributes. (Se hereda de FieldInfo).
Propiedad públicaIsPrivateObtiene un valor que indica si el campo es privado. (Se hereda de FieldInfo).
Propiedad públicaIsPublicObtiene un valor que indica si el campo es público. (Se hereda de FieldInfo).
Propiedad públicaIsSecurityCriticalObtiene 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. (Se hereda de FieldInfo).
Propiedad públicaIsSecuritySafeCriticalObtiene 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. (Se hereda de FieldInfo).
Propiedad públicaIsSecurityTransparentObtiene un valor que indica si el campo actual es transparente en el nivel de confianza actual. (Se hereda de FieldInfo).
Propiedad públicaIsSpecialNameObtiene un valor que indica si el atributo SpecialName correspondiente está definido en el enumerador FieldAttributes. (Se hereda de FieldInfo).
Propiedad públicaIsStaticObtiene un valor que indica si el campo es estático. (Se hereda de FieldInfo).
Propiedad públicaMemberTypeObtiene un valor MemberTypes que indica que este miembro es un campo. (Se hereda de FieldInfo).
Propiedad públicaMetadataTokenObtiene un valor que identifica un elemento de metadatos. (Se hereda de MemberInfo).
Propiedad públicaModuleObtiene el módulo en el que se define el tipo que contiene este campo. (Invalida a MemberInfo.Module).
Propiedad públicaNameIndica el nombre de este campo. Esta propiedad es de sólo lectura. (Invalida a MemberInfo.Name).
Propiedad públicaReflectedTypeIndica la referencia al objeto Type del que se obtuvo este objeto. Esta propiedad es de sólo lectura. (Invalida a MemberInfo.ReflectedType).
Arriba

  NombreDescripción
Método públicoEquals Devuelve un valor que indica si esta instancia equivale al objeto especificado. (Se hereda de FieldInfo).
Método públicoGetCustomAttributes(Boolean)Devuelve los atributos personalizados definidos para este campo. (Invalida a MemberInfo.GetCustomAttributes(Boolean)).
Método públicoGetCustomAttributes(Type, Boolean)Devuelve todos los atributos personalizados definidos para este campo identificado por el tipo dado. (Invalida a MemberInfo.GetCustomAttributes(Type, Boolean)).
Método públicoGetCustomAttributesDataDevuelve una lista de objetos CustomAttributeData que representan datos sobre los atributos que se han aplicado al miembro de destino. (Se hereda de MemberInfo).
Método públicoGetHashCodeDevuelve el código hash de esta instancia. (Se hereda de FieldInfo).
Método públicoGetOptionalCustomModifiersObtiene una matriz de tipos que identifican los modificadores personalizados opcionales del campo. (Se hereda de FieldInfo).
Método públicoGetRawConstantValueDevuelve un valor literal asociado al campo por un compilador. (Se hereda de FieldInfo).
Método públicoGetRequiredCustomModifiersObtiene una matriz de tipos que identifican los modificadores personalizados necesarios de la propiedad. (Se hereda de FieldInfo).
Método públicoGetTokenDevuelve el símbolo (token) que representa a este campo.
Método públicoGetType Obtiene el Typede la instancia actual. (Se hereda de Object).
Método públicoGetValueRecupera el valor del campo compatible con el objeto dado. (Invalida a FieldInfo.GetValue(Object)).
Método públicoGetValueDirectDevuelve el valor de un campo compatible con un objeto dado. (Se hereda de FieldInfo).
Método públicoIsDefinedIndica si un atributo que tenga el tipo especificado, aparece definido en un campo. (Invalida a MemberInfo.IsDefined(Type, Boolean)).
Método públicoSetConstantEstablece el valor predeterminado de este campo.
Método públicoSetCustomAttribute(CustomAttributeBuilder)Establece un atributo personalizado mediante un generador de atributos personalizados.
Método públicoSetCustomAttribute(ConstructorInfo, Byte[])Establece un atributo personalizado mediante un objeto binario de atributo especificado y personalizado.
Método públicoSetMarshal Obsoleta. Describe el cálculo de referencias nativo del campo.
Método públicoSetOffsetEspecifica el diseño del campo.
Método públicoSetValue(Object, Object)Establece el valor del campo admitido por el objeto especificado. (Se hereda de FieldInfo).
Método públicoSetValue(Object, Object, BindingFlags, Binder, CultureInfo)Establece el valor del campo admitido por el objeto especificado. (Invalida a FieldInfo.SetValue(Object, Object, BindingFlags, Binder, CultureInfo)).
Método públicoSetValueDirectEstablece el valor del campo admitido por el objeto especificado. (Se hereda de FieldInfo).
Método públicoToString Retorna una cadena que representa al objeto actual. (Se hereda de Object).
Arriba

  NombreDescripción
Método de extensión públicoGetCustomAttribute(Type)Sobrecargado. Recupera un atributo personalizado de un tipo especificado que se aplica a un miembro concreto. (Definido por CustomAttributeExtensions).
Método de extensión públicoGetCustomAttribute(Type, Boolean)Sobrecargado. Recupera un atributo personalizado de un tipo especificado que se aplica a un miembro concreto y, opcionalmente, inspecciona los antecesores de dicho miembro. (Definido por CustomAttributeExtensions).
Método de extensión públicoGetCustomAttribute<T>()Sobrecargado. Recupera un atributo personalizado de un tipo especificado que se aplica a un miembro concreto. (Definido por CustomAttributeExtensions).
Método de extensión públicoGetCustomAttribute<T>(Boolean)Sobrecargado. Recupera un atributo personalizado de un tipo especificado que se aplica a un miembro concreto y, opcionalmente, inspecciona los antecesores de dicho miembro. (Definido por CustomAttributeExtensions).
Método de extensión públicoGetCustomAttributes()Sobrecargado. Recupera una colección de atributos personalizados que se aplican a un miembro especificado. (Definido por CustomAttributeExtensions).
Método de extensión públicoGetCustomAttributes(Type)Sobrecargado. Recupera una colección de atributos personalizados de un tipo especificado que se aplican a un miembro concreto. (Definido por CustomAttributeExtensions).
Método de extensión públicoGetCustomAttributes<T>()Sobrecargado. Recupera una colección de atributos personalizados de un tipo especificado que se aplican a un miembro concreto. (Definido por CustomAttributeExtensions).
Método de extensión públicoGetCustomAttributes<T>(Boolean)Sobrecargado. 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. (Definido por CustomAttributeExtensions).
Método de extensión públicoIsDefinedIndica si se deben aplicar atributos personalizados de un tipo especificado a un miembro especificado. (Definido por CustomAttributeExtensions).
Arriba

  NombreDescripción
Implementación explícita de interfacesMétodo privado_FieldBuilder.GetIDsOfNamesAsigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.
Implementación explícita de interfacesMétodo privado_FieldBuilder.GetTypeInfoRecupera la información de tipo de un objeto, que se puede utilizar después para obtener la información de tipo de una interfaz.
Implementación explícita de interfacesMétodo privado_FieldBuilder.GetTypeInfoCount

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

Implementación explícita de interfacesMétodo privado_FieldBuilder.InvokeProporciona acceso a las propiedades y los métodos expuestos por un objeto.
Implementación explícita de interfacesMétodo privado_FieldInfo.GetIDsOfNamesAsigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío. (Se hereda de FieldInfo).
Implementación explícita de interfacesMétodo privado_FieldInfo.GetTypeObtiene un objeto Type que representa el tipo de FieldInfo. (Se hereda de FieldInfo).
Implementación explícita de interfacesMétodo privado_FieldInfo.GetTypeInfoRecupera la información de tipo de un objeto, que se puede utilizar después para obtener la información de tipo de una interfaz. (Se hereda de FieldInfo).
Implementación explícita de interfacesMétodo privado_FieldInfo.GetTypeInfoCount

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

(Se hereda de FieldInfo).
Implementación explícita de interfacesMétodo privado_FieldInfo.InvokeProporciona acceso a las propiedades y los métodos expuestos por un objeto. (Se hereda de FieldInfo).
Implementación explícita de interfacesMétodo privado_MemberInfo.GetIDsOfNamesAsigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío. (Se hereda de MemberInfo).
Implementación explícita de interfacesMétodo privado_MemberInfo.GetTypeObjeto Type que representa la clase MemberInfo. (Se hereda de MemberInfo).
Implementación explícita de interfacesMétodo privado_MemberInfo.GetTypeInfoRecupera la información de tipo de un objeto, que se puede utilizar después para obtener la información de tipo de una interfaz. (Se hereda de MemberInfo).
Implementación explícita de interfacesMétodo privado_MemberInfo.GetTypeInfoCount

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

(Se hereda de MemberInfo).
Implementación explícita de interfacesMétodo privado_MemberInfo.InvokeProporciona acceso a las propiedades y los métodos expuestos por un objeto. (Se hereda de MemberInfo).
Arriba

Obtenga una instancia de FieldBuilder llamando a DefineField, DefineInitializedData o DefineUninitializedData.

NotaNota

Actualmente el método SetValue no es compatible. Como solución, se puede recuperar FieldInfo mediante reflexión en el tipo finalizado y llamar a SetValue para establecer el valor del campo.

NotaNota

El atributo HostProtectionAttribute aplicado a este tipo o miembro tiene el siguiente valor de propiedad Resources: MayLeakOnAbort. El atributo HostProtectionAttribute no afecta a las aplicaciones de escritorio (que normalmente se inician haciendo doble clic en un icono, escribiendo un comando o introduciendo una dirección URL en el explorador). Para obtener más información, vea la clase HostProtectionAttribute o Programación en SQL Server y atributos de protección de host.

En el siguiente ejemplo de código se muestra el uso de FieldBuilder.


using System;
using System.Threading;
using System.Reflection;
using System.Reflection.Emit;
using System.Security.Permissions;

public class FieldBuilder_Sample
{
   private static Type CreateType(AppDomain currentDomain)
   {

      // Create an assembly.
      AssemblyName myAssemblyName = new AssemblyName();
      myAssemblyName.Name = "DynamicAssembly";
      AssemblyBuilder myAssembly =
                     currentDomain.DefineDynamicAssembly(myAssemblyName,AssemblyBuilderAccess.Run);
      // Create a dynamic module in Dynamic Assembly.
      ModuleBuilder myModuleBuilder=myAssembly.DefineDynamicModule("MyModule");
      // Define a public class named "MyClass" in the assembly.
      TypeBuilder myTypeBuilder= myModuleBuilder.DefineType("MyClass",TypeAttributes.Public);

      // Define a private String field named "MyField" in the type.
      FieldBuilder myFieldBuilder= myTypeBuilder.DefineField("MyField",
          typeof(string),FieldAttributes.Private|FieldAttributes.Static);
      // Create the constructor.
      Type[] constructorArgs = { typeof(String) };
      ConstructorBuilder constructor = myTypeBuilder.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, myFieldBuilder);
      constructorIL.Emit(OpCodes.Ret);

      // Create the MyMethod method.
      MethodBuilder myMethodBuilder= myTypeBuilder.DefineMethod("MyMethod",
                           MethodAttributes.Public,typeof(String),null);
      ILGenerator methodIL = myMethodBuilder.GetILGenerator();
      methodIL.Emit(OpCodes.Ldarg_0);
      methodIL.Emit(OpCodes.Ldfld, myFieldBuilder);
      methodIL.Emit(OpCodes.Ret);
      Console.WriteLine("Name               :"+myFieldBuilder.Name);
      Console.WriteLine("DeclaringType      :"+myFieldBuilder.DeclaringType);
      Console.WriteLine("Type               :"+myFieldBuilder.FieldType);
      Console.WriteLine("Token              :"+myFieldBuilder.GetToken().Token);
      return myTypeBuilder.CreateType();
   }

   [PermissionSetAttribute(SecurityAction.Demand, Name="FullTrust")]
   public static void Main()
   {
      try
      {
         Type myType = CreateType(Thread.GetDomain());
         // Create an instance of the "HelloWorld" class.
         Object helloWorld = Activator.CreateInstance(myType, new Object[] { "HelloWorld" });
         // Invoke the "MyMethod" method of the "MyClass" class.
         Object myObject  = myType.InvokeMember("MyMethod",
                        BindingFlags.InvokeMethod, null, helloWorld, null);
         Console.WriteLine("MyClass.MyMethod returned: \"" + myObject + "\"");
      }
      catch( Exception e)
      {
         Console.WriteLine("Exception Caught "+e.Message);
      }
  }
}


.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft