FieldBuilder Classe

Definizione

Definisce e rappresenta un campo.Defines and represents a field. Questa classe non può essere ereditata.This class cannot be inherited.

public ref class FieldBuilder sealed : 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
    interface _FieldBuilder
Public NotInheritable Class FieldBuilder
Inherits FieldInfo
Implements _FieldBuilder
Ereditarietà
FieldBuilder
Attributi
Implementazioni

Esempi

Nell'esempio seguente viene illustrato l'utilizzo della classe FieldBuilder.The following example illustrates the use of the FieldBuilder class.

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
      {
         // 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

Commenti

Ottenere un'istanza di FieldBuilder chiamando DefineField, DefineInitializedDatao DefineUninitializedData.Get an instance of FieldBuilder by calling DefineField, DefineInitializedData, or DefineUninitializedData.

Nota

Il metodo SetValue attualmente non è supportato.The SetValue method is currently not supported. Per risolvere il problema, recuperare il FieldInfo riflettendo il tipo finito e chiamare SetValue per impostare il valore del campo.As a workaround, retrieve the FieldInfo by reflecting on the finished type and call SetValue to set the value of the field.

Proprietà

Attributes

Indica gli attributi del campo.Indicates the attributes of this field. Questa proprietà è di sola lettura.This property is read-only.

CustomAttributes

Ottiene una raccolta che contiene gli attributi personalizzati del membro.Gets a collection that contains this member's custom attributes.

(Ereditato da MemberInfo)
DeclaringType

Indica un riferimento all'oggetto Type per il tipo che dichiara il campo.Indicates a reference to the Type object for the type that declares this field. Questa proprietà è di sola lettura.This property is read-only.

FieldHandle

Indica l'handle di metadati interno per il campo.Indicates the internal metadata handle for this field. Questa proprietà è di sola lettura.This property is read-only.

FieldType

Indica l'oggetto Type che rappresenta il tipo del campo.Indicates the Type object that represents the type of this field. Questa proprietà è di sola lettura.This property is read-only.

IsAssembly

Ottiene un valore che indica se la visibilità potenziale di questo campo è descritta da Assembly, ovvero se il campo è visibile al massimo ad altri tipi dello stesso assembly, ma non ai tipi derivati all'esterno dell'assembly.Gets a value indicating whether the potential visibility of this field is described by Assembly; that is, the field is visible at most to other types in the same assembly, and is not visible to derived types outside the assembly.

(Ereditato da FieldInfo)
IsCollectible

Ottiene un valore che indica se questo oggetto MemberInfo fa parte di un assembly conservato in un AssemblyLoadContext ritirabile.Gets a value that indicates whether this MemberInfo object is part of an assembly held in a collectible AssemblyLoadContext.

(Ereditato da MemberInfo)
IsFamily

Ottiene un valore che indica se la visibilità di questo campo è descritta da Family, ovvero se il campo è visibile solo all'interno della relativa classe e delle classi derivate.Gets a value indicating whether the visibility of this field is described by Family; that is, the field is visible only within its class and derived classes.

(Ereditato da FieldInfo)
IsFamilyAndAssembly

Ottiene un valore che indica se la visibilità di questo campo è descritta da FamANDAssem, ovvero se è possibile accedere al campo da classi derivate, ma solo se appartenenti allo stesso assembly.Gets a value indicating whether the visibility of this field is described by FamANDAssem; that is, the field can be accessed from derived classes, but only if they are in the same assembly.

(Ereditato da FieldInfo)
IsFamilyOrAssembly

Ottiene un valore che indica se la visibilità potenziale di questo campo è descritta da FamORAssem, ovvero se è possibile accedere al campo da classi derivate indipendentemente dalla posizione e da classi appartenenti allo stesso assembly.Gets a value indicating whether the potential visibility of this field is described by FamORAssem; that is, the field can be accessed by derived classes wherever they are, and by classes in the same assembly.

(Ereditato da FieldInfo)
IsInitOnly

Ottiene un valore che indica se il campo può essere impostato solo nel corpo del costruttore.Gets a value indicating whether the field can only be set in the body of the constructor.

(Ereditato da FieldInfo)
IsLiteral

Ottiene un valore che indica se il valore viene scritto in fase di compilazione e non può essere modificato.Gets a value indicating whether the value is written at compile time and cannot be changed.

(Ereditato da FieldInfo)
IsNotSerialized

Ottiene un valore che indica se questo campo dispone dell'attributo NotSerialized.Gets a value indicating whether this field has the NotSerialized attribute.

(Ereditato da FieldInfo)
IsPinvokeImpl

Ottiene un valore che indica se l'attributo PinvokeImpl corrispondente è impostato su FieldAttributes.Gets a value indicating whether the corresponding PinvokeImpl attribute is set in FieldAttributes.

(Ereditato da FieldInfo)
IsPrivate

Ottiene un valore che indica se il campo è privato.Gets a value indicating whether the field is private.

(Ereditato da FieldInfo)
IsPublic

Ottiene un valore che indica se il campo è pubblico.Gets a value indicating whether the field is public.

(Ereditato da FieldInfo)
IsSecurityCritical

Ottiene un valore che indica se il campo corrente è critico per la sicurezza o security-safe-critical al livello di attendibilità corrente.Gets a value that indicates whether the current field is security-critical or security-safe-critical at the current trust level.

(Ereditato da FieldInfo)
IsSecuritySafeCritical

Ottiene un valore che indica se il campo corrente è critico security-safe-critical al livello di attendibilità corrente.Gets a value that indicates whether the current field is security-safe-critical at the current trust level.

(Ereditato da FieldInfo)
IsSecurityTransparent

Ottiene un valore che indica se il campo corrente è trasparente al livello di attendibilità corrente.Gets a value that indicates whether the current field is transparent at the current trust level.

(Ereditato da FieldInfo)
IsSpecialName

Ottiene un valore che indica se l'attributo SpecialName corrispondente è impostato sull'enumeratore FieldAttributes.Gets a value indicating whether the corresponding SpecialName attribute is set in the FieldAttributes enumerator.

(Ereditato da FieldInfo)
IsStatic

Ottiene un valore che indica se il campo è statico.Gets a value indicating whether the field is static.

(Ereditato da FieldInfo)
MemberType

Ottiene un valore di MemberTypes che indica che questo membro è un campo.Gets a MemberTypes value indicating that this member is a field.

(Ereditato da FieldInfo)
MetadataToken

Ottiene un valore che identifica un elemento di metadati.Gets a value that identifies a metadata element.

(Ereditato da MemberInfo)
Module

Ottiene il modulo in cui viene definito il tipo che contiene questo campo.Gets the module in which the type that contains this field is being defined.

Name

Indica il nome del campo.Indicates the name of this field. Questa proprietà è di sola lettura.This property is read-only.

ReflectedType

Indica il riferimento all'oggetto Type da cui è stato ottenuto l'oggetto.Indicates the reference to the Type object from which this object was obtained. Questa proprietà è di sola lettura.This property is read-only.

Metodi

Equals(Object)

Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato.Returns a value that indicates whether this instance is equal to a specified object.

(Ereditato da FieldInfo)
GetCustomAttributes(Boolean)

Restituisce tutti gli attributi personalizzati definiti per il campo.Returns all the custom attributes defined for this field.

GetCustomAttributes(Type, Boolean)

Restituisce tutti gli attributi personalizzati definiti per il campo identificato dal tipo indicato.Returns all the custom attributes defined for this field identified by the given type.

GetCustomAttributesData()

Restituisce un elenco di oggetti CustomAttributeData che rappresentano i dati relativi agli attributi applicati al membro di destinazione.Returns a list of CustomAttributeData objects representing data about the attributes that have been applied to the target member.

(Ereditato da MemberInfo)
GetHashCode()

Restituisce il codice hash per l'istanza.Returns the hash code for this instance.

(Ereditato da FieldInfo)
GetOptionalCustomModifiers()

Ottiene una matrice di tipi che identificano i modificatori personalizzati facoltativi del campo.Gets an array of types that identify the optional custom modifiers of the field.

(Ereditato da FieldInfo)
GetRawConstantValue()

Restituisce un valore letterale associato al campo da un compilatore.Returns a literal value associated with the field by a compiler.

(Ereditato da FieldInfo)
GetRequiredCustomModifiers()

Ottiene una matrice di tipi che identificano i modificatori personalizzati obbligatori della proprietà.Gets an array of types that identify the required custom modifiers of the property.

(Ereditato da FieldInfo)
GetToken()

Restituisce il token che rappresenta il campo.Returns the token representing this field.

GetType() (Ereditato da FieldInfo)
GetValue(Object)

Recupera il valore del campo supportato dall'oggetto indicato.Retrieves the value of the field supported by the given object.

GetValueDirect(TypedReference)

Restituisce il valore di un campo supportato da un dato oggetto.Returns the value of a field supported by a given object.

(Ereditato da FieldInfo)
HasSameMetadataDefinitionAs(MemberInfo) (Ereditato da MemberInfo)
IsDefined(Type, Boolean)

Indica se un attributo con il tipo specificato è definito in un campo.Indicates whether an attribute having the specified type is defined on a field.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Ereditato da Object)
SetConstant(Object)

Imposta il valore predefinito del campo.Sets the default value of this field.

SetCustomAttribute(ConstructorInfo, Byte[])

Imposta un attributo personalizzato usando un BLOB di attributi personalizzati specificato.Sets a custom attribute using a specified custom attribute blob.

SetCustomAttribute(CustomAttributeBuilder)

Imposta un attributo personalizzato usando un generatore di attributi personalizzati.Sets a custom attribute using a custom attribute builder.

SetMarshal(UnmanagedMarshal)

Descrive il marshalling nativo del campo.Describes the native marshaling of the field.

SetOffset(Int32)

Specifica il layout dei campi.Specifies the field layout.

SetValue(Object, Object)

Imposta il valore del campo supportato dall'oggetto specificato.Sets the value of the field supported by the given object.

(Ereditato da FieldInfo)
SetValue(Object, Object, BindingFlags, Binder, CultureInfo)

Imposta il valore del campo supportato dall'oggetto specificato.Sets the value of the field supported by the given object.

SetValueDirect(TypedReference, Object)

Imposta il valore del campo supportato dall'oggetto specificato.Sets the value of the field supported by the given object.

(Ereditato da FieldInfo)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

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

Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch.Maps a set of names to a corresponding set of dispatch identifiers.

_FieldBuilder.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera le informazioni sul tipo relative a un oggetto che può quindi essere usato per ottenere informazioni sul tipo relative a un'interfaccia.Retrieves the type information for an object, which can then be used to get the type information for an interface.

_FieldBuilder.GetTypeInfoCount(UInt32)

Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

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

Fornisce l'accesso a proprietà e metodi esposti da un oggetto.Provides access to properties and methods exposed by an object.

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

Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch.Maps a set of names to a corresponding set of dispatch identifiers.

(Ereditato da FieldInfo)
_FieldInfo.GetType()

Ottiene un oggetto Type che rappresenta il tipo FieldInfo.Gets a Type object representing the FieldInfo type.

(Ereditato da FieldInfo)
_FieldInfo.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera le informazioni sul tipo relative a un oggetto che può quindi essere usato per ottenere informazioni sul tipo relative a un'interfaccia.Retrieves the type information for an object, which can then be used to get the type information for an interface.

(Ereditato da FieldInfo)
_FieldInfo.GetTypeInfoCount(UInt32)

Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Ereditato da FieldInfo)
_FieldInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornisce l'accesso a proprietà e metodi esposti da un oggetto.Provides access to properties and methods exposed by an object.

(Ereditato da FieldInfo)
_MemberInfo.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch.Maps a set of names to a corresponding set of dispatch identifiers.

(Ereditato da MemberInfo)
_MemberInfo.GetType()

Ottiene un oggetto Type che rappresenta la classe MemberInfo.Gets a Type object representing the MemberInfo class.

(Ereditato da MemberInfo)
_MemberInfo.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera le informazioni sul tipo relative a un oggetto che può quindi essere usato per ottenere informazioni sul tipo relative a un'interfaccia.Retrieves the type information for an object, which can then be used to get the type information for an interface.

(Ereditato da MemberInfo)
_MemberInfo.GetTypeInfoCount(UInt32)

Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Ereditato da MemberInfo)
_MemberInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornisce l'accesso a proprietà e metodi esposti da un oggetto.Provides access to properties and methods exposed by an object.

(Ereditato da MemberInfo)
ICustomAttributeProvider.GetCustomAttributes(Boolean) (Ereditato da MemberInfo)
ICustomAttributeProvider.GetCustomAttributes(Type, Boolean) (Ereditato da MemberInfo)
ICustomAttributeProvider.IsDefined(Type, Boolean) (Ereditato da MemberInfo)

Metodi di estensione

GetCustomAttribute(MemberInfo, Type)

Recupera una attributo personalizzato di un tipo specificato che viene applicato a un membro specificato.Retrieves a custom attribute of a specified type that is applied to a specified member.

GetCustomAttribute(MemberInfo, Type, Boolean)

Recupera un attributo personalizzato di un tipo specificato che viene applicato a un membro specificato e verifica facoltativamente i predecessori di tale membro.Retrieves a custom attribute of a specified type that is applied to a specified member, and optionally inspects the ancestors of that member.

GetCustomAttribute<T>(MemberInfo)

Recupera una attributo personalizzato di un tipo specificato che viene applicato a un membro specificato.Retrieves a custom attribute of a specified type that is applied to a specified member.

GetCustomAttribute<T>(MemberInfo, Boolean)

Recupera un attributo personalizzato di un tipo specificato che viene applicato a un membro specificato e verifica facoltativamente i predecessori di tale membro.Retrieves a custom attribute of a specified type that is applied to a specified member, and optionally inspects the ancestors of that member.

GetCustomAttributes(MemberInfo)

Recupera una raccolta di attributi personalizzati che vengono applicati a un membro specificato.Retrieves a collection of custom attributes that are applied to a specified member.

GetCustomAttributes(MemberInfo, Boolean)

Recupera una raccolta di attributi personalizzati che vengono applicati a un membro specificato e verifica facoltativamente i predecessori di tale membro.Retrieves a collection of custom attributes that are applied to a specified member, and optionally inspects the ancestors of that member.

GetCustomAttributes(MemberInfo, Type)

Recupera una raccolta di attributi personalizzati di un tipo specificato che vengono applicati a un membro specificato.Retrieves a collection of custom attributes of a specified type that are applied to a specified member.

GetCustomAttributes(MemberInfo, Type, Boolean)

Recupera una raccolta di attributi personalizzati di un tipo specificato che vengono applicati a un membro specificato e verifica facoltativamente i predecessori di tale membro.Retrieves a collection of custom attributes of a specified type that are applied to a specified member, and optionally inspects the ancestors of that member.

GetCustomAttributes<T>(MemberInfo)

Recupera una raccolta di attributi personalizzati di un tipo specificato che vengono applicati a un membro specificato.Retrieves a collection of custom attributes of a specified type that are applied to a specified member.

GetCustomAttributes<T>(MemberInfo, Boolean)

Recupera una raccolta di attributi personalizzati di un tipo specificato che vengono applicati a un membro specificato e verifica facoltativamente i predecessori di tale membro.Retrieves a collection of custom attributes of a specified type that are applied to a specified member, and optionally inspects the ancestors of that member.

IsDefined(MemberInfo, Type)

Indica se vengono applicati attributi personalizzati del tipo specificato a un membro specificato.Indicates whether custom attributes of a specified type are applied to a specified member.

IsDefined(MemberInfo, Type, Boolean)

Indica se gli attributi personalizzati di un tipo specificato vengono applicati a un membro specificato e, facoltativamente, ai relativi predecessori.Indicates whether custom attributes of a specified type are applied to a specified member, and, optionally, applied to its ancestors.

GetMetadataToken(MemberInfo)

Ottiene un token di metadati per il membro specificato, se disponibile.Gets a metadata token for the given member, if available.

HasMetadataToken(MemberInfo)

Restituisce un valore che indica se un token di metadati è disponibile per il membro specificato.Returns a value that indicates whether a metadata token is available for the specified member.

Si applica a