FieldBuilder Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
- 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 |
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 |
IsPinvokeImpl |
Obtiene un valor que indica si el atributo |
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 |
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 |
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 |
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. |