Condividi tramite


FieldBuilder Classe

Definizione

Definisce e rappresenta un campo. La classe non può essere ereditata.

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
Ereditarietà
FieldBuilder
Attributi
Implementazioni

Esempio

Nell'esempio seguente viene illustrato l'uso della FieldBuilder classe .

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

Commenti

Ottenere un'istanza di FieldBuilder chiamando DefineField, DefineInitializedDatao DefineUninitializedData.

Nota

Il SetValue metodo non è attualmente supportato. Come soluzione alternativa, recuperare l'oggetto FieldInfo riflettendo sul tipo completato e chiamare SetValue per impostare il valore del campo.

Costruttori

FieldBuilder()

Inizializza una nuova istanza della classe FieldBuilder.

Proprietà

Attributes

Indica gli attributi del campo. Questa proprietà è di sola lettura.

CustomAttributes

Ottiene una raccolta che contiene gli attributi personalizzati del membro.

(Ereditato da MemberInfo)
DeclaringType

Indica un riferimento all'oggetto Type per il tipo che dichiara il campo. Questa proprietà è di sola lettura.

FieldHandle

Indica l'handle di metadati interno per il campo. Questa proprietà è di sola lettura.

FieldHandle

Ottiene un oggetto RuntimeFieldHandle, che è un handle della rappresentazione dei metadati interni di un campo.

(Ereditato da FieldInfo)
FieldType

Indica l'oggetto Type che rappresenta il tipo del campo. Questa proprietà è di sola lettura.

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.

(Ereditato da FieldInfo)
IsCollectible

Ottiene un valore che indica se questo oggetto MemberInfo fa parte di un assembly conservato in un AssemblyLoadContext ritirabile.

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

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

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

(Ereditato da FieldInfo)
IsInitOnly

Ottiene un valore che indica se il campo può essere impostato solo nel corpo del costruttore.

(Ereditato da FieldInfo)
IsLiteral

Ottiene un valore che indica se il valore viene scritto in fase di compilazione e non può essere modificato.

(Ereditato da FieldInfo)
IsNotSerialized
Obsoleti.

Ottiene un valore che indica se questo campo dispone dell'attributo NotSerialized.

(Ereditato da FieldInfo)
IsPinvokeImpl

Ottiene un valore che indica se l'attributo PinvokeImpl corrispondente è impostato su FieldAttributes.

(Ereditato da FieldInfo)
IsPrivate

Ottiene un valore che indica se il campo è privato.

(Ereditato da FieldInfo)
IsPublic

Ottiene un valore che indica se il campo è pubblico.

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

(Ereditato da FieldInfo)
IsSecuritySafeCritical

Ottiene un valore che indica se il campo corrente è critico security-safe-critical al livello di attendibilità corrente.

(Ereditato da FieldInfo)
IsSecurityTransparent

Ottiene un valore che indica se il campo corrente è trasparente al livello di attendibilità corrente.

(Ereditato da FieldInfo)
IsSpecialName

Ottiene un valore che indica se l'attributo SpecialName corrispondente è impostato sull'enumeratore FieldAttributes.

(Ereditato da FieldInfo)
IsStatic

Ottiene un valore che indica se il campo è statico.

(Ereditato da FieldInfo)
MemberType

Ottiene un valore di MemberTypes che indica che questo membro è un campo.

(Ereditato da FieldInfo)
MetadataToken

Ottiene un token che identifica il modulo dinamico corrente nei metadati.

MetadataToken

Ottiene un valore che identifica un elemento di metadati.

(Ereditato da MemberInfo)
Module

Ottiene il modulo in cui viene definito il tipo che contiene questo campo.

Module

Ottiene il modulo in cui viene definito il tipo che dichiara il membro rappresentato dall'oggetto MemberInfo corrente.

(Ereditato da MemberInfo)
Name

Indica il nome del campo. Questa proprietà è di sola lettura.

ReflectedType

Indica il riferimento all'oggetto Type da cui è stato ottenuto l'oggetto. Questa proprietà è di sola lettura.

ReflectedType

Ottiene l'oggetto classe utilizzato per ottenere questa istanza di MemberInfo.

(Ereditato da MemberInfo)

Metodi

Equals(Object)

Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato.

(Ereditato da FieldInfo)
GetCustomAttributes(Boolean)

Restituisce tutti gli attributi personalizzati definiti per il campo.

GetCustomAttributes(Boolean)

Se sottoposto a override in una classe derivata, restituisce una matrice di tutti gli attributi personalizzati applicati a questo membro.

(Ereditato da MemberInfo)
GetCustomAttributes(Type, Boolean)

Restituisce tutti gli attributi personalizzati definiti per il campo identificato dal tipo indicato.

GetCustomAttributes(Type, Boolean)

Quando viene sottoposto a override in una classe derivata, questo metodo restituisce una matrice di attributi personalizzati applicati a questo membro e identificati da Type.

(Ereditato da MemberInfo)
GetCustomAttributesData()

Restituisce un elenco di oggetti CustomAttributeData che rappresentano i dati relativi agli attributi applicati al membro di destinazione.

(Ereditato da MemberInfo)
GetHashCode()

Restituisce il codice hash per l'istanza.

(Ereditato da FieldInfo)
GetModifiedFieldType()

Ottiene il tipo modificato di questo oggetto campo.

(Ereditato da FieldInfo)
GetOptionalCustomModifiers()

Ottiene una matrice di tipi che identificano i modificatori personalizzati facoltativi del campo.

(Ereditato da FieldInfo)
GetRawConstantValue()

Restituisce un valore letterale associato al campo da un compilatore.

(Ereditato da FieldInfo)
GetRequiredCustomModifiers()

Ottiene una matrice di tipi che identificano i modificatori personalizzati obbligatori della proprietà.

(Ereditato da FieldInfo)
GetToken()

Restituisce il token che rappresenta il campo.

GetType()

Individua gli attributi di un campo della classe e consente di accedere ai metadati del campo.

(Ereditato da FieldInfo)
GetValue(Object)

Recupera il valore del campo supportato dall'oggetto indicato.

GetValueDirect(TypedReference)

Restituisce il valore di un campo supportato da un dato oggetto.

(Ereditato da FieldInfo)
HasSameMetadataDefinitionAs(MemberInfo)

Definisce e rappresenta un campo. La classe non può essere ereditata.

(Ereditato da MemberInfo)
IsDefined(Type, Boolean)

Indica se un attributo con il tipo specificato è definito in un campo.

IsDefined(Type, Boolean)

Quando se ne effettua l'override in una classe derivata, indica se a questo membro sono applicati uno o più attributi del tipo specificato o dei tipi derivati.

(Ereditato da MemberInfo)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
SetConstant(Object)

Imposta il valore predefinito del campo.

SetConstantCore(Object)

Quando sottoposto a override in una classe derivata, imposta il valore predefinito di questo campo.

SetCustomAttribute(ConstructorInfo, Byte[])

Imposta un attributo personalizzato usando un BLOB di attributi personalizzati specificato.

SetCustomAttribute(CustomAttributeBuilder)

Imposta un attributo personalizzato usando un generatore di attributi personalizzati.

SetCustomAttributeCore(ConstructorInfo, ReadOnlySpan<Byte>)

Quando sottoposto a override in una classe derivata, imposta un attributo personalizzato su questo assembly.

SetMarshal(UnmanagedMarshal)
Obsoleti.

Descrive il marshalling nativo del campo.

SetOffset(Int32)

Specifica il layout dei campi.

SetOffsetCore(Int32)

Quando sottoposto a override in una classe derivata, specifica il layout del campo.

SetValue(Object, Object)

Imposta il valore del campo supportato dall'oggetto specificato.

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

Imposta il valore del campo supportato dall'oggetto specificato.

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

Quando se ne effettua l'override in una classe derivata, imposta il valore del campo supportato dall'oggetto dato.

(Ereditato da FieldInfo)
SetValueDirect(TypedReference, Object)

Imposta il valore del campo supportato dall'oggetto specificato.

(Ereditato da FieldInfo)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

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

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

_FieldBuilder.GetTypeInfoCount(UInt32)

Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 1).

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

Fornisce l'accesso a proprietà e metodi esposti da un oggetto.

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

Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch.

(Ereditato da FieldInfo)
_FieldInfo.GetType()

Ottiene un oggetto Type che rappresenta il tipo FieldInfo.

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

(Ereditato da FieldInfo)
_FieldInfo.GetTypeInfoCount(UInt32)

Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 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.

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

(Ereditato da MemberInfo)
_MemberInfo.GetType()

Ottiene un oggetto Type che rappresenta la classe MemberInfo.

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

(Ereditato da MemberInfo)
_MemberInfo.GetTypeInfoCount(UInt32)

Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 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.

(Ereditato da MemberInfo)
ICustomAttributeProvider.GetCustomAttributes(Boolean)

Restituisce una matrice di tutti gli attributi personalizzati definiti in questo membro, esclusi gli attributi denominati, oppure una matrice vuota se non sono presenti attributi personalizzati.

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

Restituisce una matrice di attributi personalizzati definiti in questo membro, identificati dal tipo o da una matrice vuota, se non sono presenti attributi personalizzati di quel tipo.

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

Indica se per questo membro sono definite una o più istanze di attributeType.

(Ereditato da MemberInfo)

Metodi di estensione

GetCustomAttribute(MemberInfo, Type)

Recupera una attributo personalizzato di un tipo specificato che viene applicato a un membro specificato.

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.

GetCustomAttribute<T>(MemberInfo)

Recupera una attributo personalizzato di un tipo specificato che viene applicato a un membro specificato.

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.

GetCustomAttributes(MemberInfo)

Recupera una raccolta di attributi personalizzati che vengono applicati a un membro specificato.

GetCustomAttributes(MemberInfo, Boolean)

Recupera una raccolta di attributi personalizzati che vengono applicati a un membro specificato e verifica facoltativamente i predecessori di tale membro.

GetCustomAttributes(MemberInfo, Type)

Recupera una raccolta di attributi personalizzati di un tipo specificato che vengono applicati a un membro specificato.

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.

GetCustomAttributes<T>(MemberInfo)

Recupera una raccolta di attributi personalizzati di un tipo specificato che vengono applicati a un membro specificato.

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.

IsDefined(MemberInfo, Type)

Indica se vengono applicati attributi personalizzati del tipo specificato a un membro specificato.

IsDefined(MemberInfo, Type, Boolean)

Indica se gli attributi personalizzati di un tipo specificato vengono applicati a un membro specificato e, facoltativamente, ai relativi predecessori.

GetMetadataToken(MemberInfo)

Ottiene un token di metadati per il membro specificato, se disponibile.

HasMetadataToken(MemberInfo)

Restituisce un valore che indica se un token di metadati è disponibile per il membro specificato.

Si applica a