FieldBuilder Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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à
- 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 |
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 |
IsPinvokeImpl |
Ottiene un valore che indica se l'attributo |
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 |
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 |
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 |
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. |