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, 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à
- 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 |
| IsPinvokeImpl |
Ottiene un valore che indica se l'attributo corrispondente |
| 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 |
| 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. |