FieldBuilder Classe

Definizione

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

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

Annotazioni

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.

Proprietà

Nome Descrizione
Attributes

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

CustomAttributes

Ottiene una raccolta contenente gli attributi personalizzati di questo membro.

(Ereditato da MemberInfo)
DeclaringType

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

FieldHandle

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

FieldType

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

IsAssembly

Ottiene un valore che indica se la visibilità potenziale di questo campo è descritta da Assembly, ovvero il campo è visibile al massimo ad altri tipi nello stesso assembly e non è visibile ai tipi derivati all'esterno dell'assembly.

(Ereditato da FieldInfo)
IsFamily

Ottiene un valore che indica se la visibilità di questo campo è descritta da Family, ovvero il campo è visibile solo all'interno della classe e delle classi derivate.

(Ereditato da FieldInfo)
IsFamilyAndAssembly

Ottiene un valore che indica se la visibilità di questo campo è descritta da FamANDAssem; ovvero, è possibile accedere al campo dalle classi derivate, ma solo se si trovano nello stesso assembly.

(Ereditato da FieldInfo)
IsFamilyOrAssembly

Ottiene un valore che indica se la visibilità potenziale di questo campo è descritta da FamORAssem, ovvero è possibile accedere al campo da classi derivate ovunque si trovino e da classi nello 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

Ottiene un valore che indica se questo campo ha l'attributo NotSerialized .

(Ereditato da FieldInfo)
IsPinvokeImpl

Ottiene un valore che indica se l'attributo corrispondente PinvokeImpl è impostato in 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 critico per la sicurezza a livello di attendibilità corrente.

(Ereditato da FieldInfo)
IsSecuritySafeCritical

Ottiene un valore che indica se il campo corrente è critico per la sicurezza a livello di attendibilità corrente.

(Ereditato da FieldInfo)
IsSecurityTransparent

Ottiene un valore che indica se il campo corrente è trasparente a livello di trust corrente.

(Ereditato da FieldInfo)
IsSpecialName

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

(Ereditato da FieldInfo)
IsStatic

Ottiene un valore che indica se il campo è statico.

(Ereditato da FieldInfo)
MemberType

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

(Ereditato da FieldInfo)
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 è definito il tipo che dichiara il membro rappresentato dall'oggetto corrente MemberInfo .

(Ereditato da MemberInfo)
Name

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

ReflectedType

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

Metodi

Nome Descrizione
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 questo campo.

GetCustomAttributes(Type, Boolean)

Restituisce tutti gli attributi personalizzati definiti per questo campo identificato dal tipo specificato.

GetCustomAttributesData()

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

(Ereditato da MemberInfo)
GetHashCode()

Restituisce il codice hash per questa istanza.

(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 richiesti della proprietà.

(Ereditato da FieldInfo)
GetToken()

Restituisce il token che rappresenta questo campo.

GetType()

Individua gli attributi di un campo di classe e fornisce l'accesso ai metadati dei campi.

(Ereditato da FieldInfo)
GetValue(Object)

Recupera il valore del campo supportato dall'oggetto specificato.

GetValueDirect(TypedReference)

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

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

MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
SetConstant(Object)

Imposta il valore predefinito di questo campo.

SetCustomAttribute(ConstructorInfo, Byte[])

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

SetCustomAttribute(CustomAttributeBuilder)

Imposta un attributo personalizzato usando un generatore di attributi personalizzato.

SetMarshal(UnmanagedMarshal)
Obsoleti.

Descrive il marshalling nativo del campo.

SetOffset(Int32)

Specifica il layout del campo.

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

Imposta il valore del campo supportato dall'oggetto specificato.

SetValue(Object, Object)

Imposta il valore del campo supportato dall'oggetto specificato.

(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

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

Esegue il mapping di un set di nomi a un set corrispondente di identificatori 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 di 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 alle proprietà e ai 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 identificatori dispatch.

(Ereditato da FieldInfo)
_FieldInfo.GetType()

Ottiene un Type oggetto che rappresenta il FieldInfo tipo.

(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 di 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 alle proprietà e ai 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 identificatori dispatch.

(Ereditato da MemberInfo)
_MemberInfo.GetType()

Ottiene un Type oggetto che rappresenta la MemberInfo classe .

(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 di 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 alle proprietà e ai metodi esposti da un oggetto .

(Ereditato da MemberInfo)

Metodi di estensione

Nome Descrizione
GetCustomAttribute(MemberInfo, Type, Boolean)

Recupera un attributo personalizzato di un tipo specificato applicato a un membro specificato e, facoltativamente, controlla i predecessori di tale membro.

GetCustomAttribute(MemberInfo, Type)

Recupera un attributo personalizzato di un tipo specificato applicato a un membro specificato.

GetCustomAttribute<T>(MemberInfo, Boolean)

Recupera un attributo personalizzato di un tipo specificato applicato a un membro specificato e, facoltativamente, controlla i predecessori di tale membro.

GetCustomAttribute<T>(MemberInfo)

Recupera un attributo personalizzato di un tipo specificato applicato a un membro specificato.

GetCustomAttributes(MemberInfo, Boolean)

Recupera una raccolta di attributi personalizzati applicati a un membro specificato e, facoltativamente, controlla i predecessori di tale membro.

GetCustomAttributes(MemberInfo, Type, Boolean)

Recupera una raccolta di attributi personalizzati di un tipo specificato applicato a un membro specificato e, facoltativamente, controlla i predecessori di tale membro.

GetCustomAttributes(MemberInfo, Type)

Recupera una raccolta di attributi personalizzati di un tipo specificato applicato a un membro specificato.

GetCustomAttributes(MemberInfo)

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

GetCustomAttributes<T>(MemberInfo, Boolean)

Recupera una raccolta di attributi personalizzati di un tipo specificato applicato a un membro specificato e, facoltativamente, controlla i predecessori di tale membro.

GetCustomAttributes<T>(MemberInfo)

Recupera una raccolta di attributi personalizzati di un tipo specificato applicato 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, applicati ai relativi predecessori.

IsDefined(MemberInfo, Type)

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

Si applica a