Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Classe PropertyBuilder

 

Data di pubblicazione: ottobre 2016

Definisce le proprietà per un tipo.

Spazio dei nomi:   System.Reflection.Emit
Assembly:  mscorlib (in mscorlib.dll)

System.Object
  System.Reflection.MemberInfo
    System.Reflection.PropertyInfo
      System.Reflection.Emit.PropertyBuilder

[ClassInterfaceAttribute(ClassInterfaceType.None)]
[ComVisibleAttribute(true)]
[HostProtectionAttribute(SecurityAction.LinkDemand, MayLeakOnAbort = true)]
public sealed class PropertyBuilder : PropertyInfo, _PropertyBuilder

NomeDescrizione
System_CAPS_pubpropertyAttributes

Ottiene gli attributi per questa proprietà.(Esegue l'override di PropertyInfo.Attributes.)

System_CAPS_pubpropertyCanRead

Ottiene un valore che indica se è possibile leggere la proprietà.(Esegue l'override di PropertyInfo.CanRead.)

System_CAPS_pubpropertyCanWrite

Ottiene un valore che indica se è possibile scrivere nella proprietà.(Esegue l'override di PropertyInfo.CanWrite.)

System_CAPS_pubpropertyCustomAttributes

Ottiene una raccolta che contiene gli attributi personalizzati del membro.(Ereditato da MemberInfo.)

System_CAPS_pubpropertyDeclaringType

Ottiene la classe che dichiara il membro.(Esegue l'override di MemberInfo.DeclaringType.)

System_CAPS_pubpropertyGetMethod

Ottiene la funzione di accesso get per questa proprietà.(Ereditato da PropertyInfo.)

System_CAPS_pubpropertyIsSpecialName

Ottiene un valore che indica se la proprietà è il nome speciale.(Ereditato da PropertyInfo.)

System_CAPS_pubpropertyMemberType

Ottiene un valore MemberTypes che indica che questo membro è una proprietà.(Ereditato da PropertyInfo.)

System_CAPS_pubpropertyMetadataToken

Ottiene un valore che identifica un elemento di metadati.(Ereditato da MemberInfo.)

System_CAPS_pubpropertyModule

Ottiene il modulo in cui viene definito il tipo che dichiara la proprietà corrente.(Esegue l'override di MemberInfo.Module.)

System_CAPS_pubpropertyName

Ottiene il nome del membro.(Esegue l'override di MemberInfo.Name.)

System_CAPS_pubpropertyPropertyToken

Recupera il token per questa proprietà.

System_CAPS_pubpropertyPropertyType

Ottiene il tipo del campo di questa proprietà.(Esegue l'override di PropertyInfo.PropertyType.)

System_CAPS_pubpropertyReflectedType

Ottiene l'oggetto classe usato per ottenere questa istanza di MemberInfo.(Esegue l'override di MemberInfo.ReflectedType.)

System_CAPS_pubpropertySetMethod

Ottiene la funzione di accesso set per questa proprietà.(Ereditato da PropertyInfo.)

NomeDescrizione
System_CAPS_pubmethodAddOtherMethod(MethodBuilder)

Aggiunge uno degli altri metodi associati a questa proprietà.

System_CAPS_pubmethodEquals(Object)

Restituisce un valore che indica se questa istanza è uguale ad un oggetto specificato. (Ereditato da PropertyInfo.)

System_CAPS_pubmethodGetAccessors()

Restituisce una matrice i cui elementi riflettono le funzioni di accesso get e set pubbliche della proprietà riflesse dall'istanza corrente.(Ereditato da PropertyInfo.)

System_CAPS_pubmethodGetAccessors(Boolean)

Restituisce una matrice di pubblici e non pubblici get e set funzioni di accesso per questa proprietà.(Esegue l'override di PropertyInfo.GetAccessors(Boolean).)

System_CAPS_pubmethodGetConstantValue()

Restituisce un valore letterale associato alla proprietà da un compilatore.(Ereditato da PropertyInfo.)

System_CAPS_pubmethodGetCustomAttributes(Boolean)

Restituisce una matrice di tutti gli attributi personalizzati per questa proprietà.(Esegue l'override di MemberInfo.GetCustomAttributes(Boolean).)

System_CAPS_pubmethodGetCustomAttributes(Type, Boolean)

Restituisce una matrice di attributi personalizzati identificati da Type.(Esegue l'override di MemberInfo.GetCustomAttributes(Type, Boolean).)

System_CAPS_pubmethodGetCustomAttributesData()

Restituisce un elenco di CustomAttributeData gli oggetti che rappresentano i dati sugli attributi applicati al membro di destinazione.(Ereditato da MemberInfo.)

System_CAPS_pubmethodGetGetMethod()

Restituisce la funzione di accesso get pubblica per questa proprietà.(Ereditato da PropertyInfo.)

System_CAPS_pubmethodGetGetMethod(Boolean)

Restituisce il pubblico e non pubblici accesso get per questa proprietà.(Esegue l'override di PropertyInfo.GetGetMethod(Boolean).)

System_CAPS_pubmethodGetHashCode()

Restituisce il codice hash per questa istanza. (Ereditato da PropertyInfo.)

System_CAPS_pubmethodGetIndexParameters()

Restituisce una matrice di tutti i parametri di indice per la proprietà.(Esegue l'override di PropertyInfo.GetIndexParameters().)

System_CAPS_pubmethodGetOptionalCustomModifiers()

Restituisce una matrice di tipi che rappresentano i modificatori personalizzati facoltativi della proprietà.(Ereditato da PropertyInfo.)

System_CAPS_pubmethodGetRawConstantValue()

Restituisce un valore letterale associato alla proprietà da un compilatore.(Ereditato da PropertyInfo.)

System_CAPS_pubmethodGetRequiredCustomModifiers()

Restituisce una matrice di tipi che rappresentano i modificatori personalizzati obbligatori della proprietà.(Ereditato da PropertyInfo.)

System_CAPS_pubmethodGetSetMethod()

Restituisce la funzione di accesso set pubblica per questa proprietà.(Ereditato da PropertyInfo.)

System_CAPS_pubmethodGetSetMethod(Boolean)

Restituisce la funzione di accesso set per questa proprietà.(Esegue l'override di PropertyInfo.GetSetMethod(Boolean).)

System_CAPS_pubmethodGetType()

Ottiene l'oggetto Type dell'istanza corrente.(Ereditato da Object.)

System_CAPS_pubmethodGetValue(Object)

Restituisce il valore della proprietà di un oggetto specificato.(Ereditato da PropertyInfo.)

System_CAPS_pubmethodGetValue(Object, BindingFlags, Binder, Object[], CultureInfo)

Ottiene il valore di una proprietà con l'oggetto specificato associazione, l'indice e CultureInfo.(Esegue l'override di PropertyInfo.GetValue(Object, BindingFlags, Binder, Object[], CultureInfo).)

System_CAPS_pubmethodGetValue(Object, Object[])

Ottiene il valore della proprietà indicizzata chiamando il metodo di richiamo della proprietà.(Esegue l'override di PropertyInfo.GetValue(Object, Object[]).)

System_CAPS_pubmethodIsDefined(Type, Boolean)

Indica se uno o più istanze di attributeType è definito in questa proprietà.(Esegue l'override di MemberInfo.IsDefined(Type, Boolean).)

System_CAPS_pubmethodSetConstant(Object)

Imposta il valore predefinito di questa proprietà.

System_CAPS_pubmethodSetCustomAttribute(ConstructorInfo, Byte[])

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

System_CAPS_pubmethodSetCustomAttribute(CustomAttributeBuilder)

Impostare un attributo personalizzato usando un generatore di attributi personalizzati.

System_CAPS_pubmethodSetGetMethod(MethodBuilder)

Imposta il metodo che ottiene il valore della proprietà.

System_CAPS_pubmethodSetSetMethod(MethodBuilder)

Imposta il metodo che imposta il valore della proprietà.

System_CAPS_pubmethodSetValue(Object, Object)

Imposta il valore della proprietà di un oggetto specificato.(Ereditato da PropertyInfo.)

System_CAPS_pubmethodSetValue(Object, Object, BindingFlags, Binder, Object[], CultureInfo)

Imposta il valore della proprietà per l'oggetto specificato sul valore dato.(Esegue l'override di PropertyInfo.SetValue(Object, Object, BindingFlags, Binder, Object[], CultureInfo).)

System_CAPS_pubmethodSetValue(Object, Object, Object[])

Imposta il valore della proprietà con valori di indice facoltativi per le proprietà di indice.(Esegue l'override di PropertyInfo.SetValue(Object, Object, Object[]).)

System_CAPS_pubmethodToString()

Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object.)

NomeDescrizione
System_CAPS_pubinterfaceSystem_CAPS_privmethod_MemberInfo.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Esegue il mapping di un set di nomi a un corrispondente set di identificatori di dispatch. (Ereditato da MemberInfo.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_MemberInfo.GetType()

Ottiene un Type oggetto che rappresenta la MemberInfo classe.(Ereditato da MemberInfo.)

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

System_CAPS_pubinterfaceSystem_CAPS_privmethod_MemberInfo.GetTypeInfoCount(UInt32)

Recupera il numero di interfacce di informazioni sui tipi che un oggetto fornisce (0 o 1). (Ereditato da MemberInfo.)

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

Fornisce l'accesso alle proprietà ed ai metodi esposti da un oggetto. (Ereditato da MemberInfo.)

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

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

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

System_CAPS_pubinterfaceSystem_CAPS_privmethod_PropertyBuilder.GetTypeInfoCount(UInt32)

Recupera il numero di interfacce di informazioni sui tipi che un oggetto fornisce (0 o 1).

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

Fornisce l'accesso alle proprietà ed ai metodi esposti da un oggetto.

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

Esegue il mapping di un set di nomi a un corrispondente set di identificatori di dispatch. (Ereditato da PropertyInfo.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_PropertyInfo.GetType()

Ottiene un oggetto Type che rappresenta il tipo PropertyInfo.(Ereditato da PropertyInfo.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_PropertyInfo.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 PropertyInfo.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_PropertyInfo.GetTypeInfoCount(UInt32)

Recupera il numero di interfacce di informazioni sui tipi che un oggetto fornisce (0 o 1). (Ereditato da PropertyInfo.)

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

Fornisce l'accesso alle proprietà ed ai metodi esposti da un oggetto. (Ereditato da PropertyInfo.)

NomeDescrizione
System_CAPS_pubmethodGetCustomAttribute(Type)

Sottoposto a overload. Recupera un attributo personalizzato di un tipo specificato viene applicato a un membro specificato.(Definito da CustomAttributeExtensions.)

System_CAPS_pubmethodGetCustomAttribute(Type, Boolean)

Sottoposto a overload. Recupera un attributo personalizzato di un tipo specificato che viene applicato a un membro specificato e, facoltativamente, esamina i predecessori di tale membro.(Definito da CustomAttributeExtensions.)

System_CAPS_pubmethodGetCustomAttribute<T>()

Sottoposto a overload. Recupera un attributo personalizzato di un tipo specificato viene applicato a un membro specificato.(Definito da CustomAttributeExtensions.)

System_CAPS_pubmethodGetCustomAttribute<T>(Boolean)

Sottoposto a overload. Recupera un attributo personalizzato di un tipo specificato che viene applicato a un membro specificato e, facoltativamente, esamina i predecessori di tale membro.(Definito da CustomAttributeExtensions.)

System_CAPS_pubmethodGetCustomAttributes()

Sottoposto a overload. Recupera una raccolta di attributi personalizzati applicati a un membro specificato.(Definito da CustomAttributeExtensions.)

System_CAPS_pubmethodGetCustomAttributes(Type)

Sottoposto a overload. Recupera una raccolta di attributi personalizzati di un tipo specificato che vengono applicate a un membro specificato.(Definito da CustomAttributeExtensions.)

System_CAPS_pubmethodGetCustomAttributes<T>(Boolean)

Sottoposto a overload. Recupera una raccolta di attributi personalizzati di un tipo specificato che vengono applicate a un membro specificato e, facoltativamente, esamina i predecessori di tale membro.(Definito da CustomAttributeExtensions.)

System_CAPS_pubmethodIsDefined(Type)

Sottoposto a overload. Indica se gli attributi personalizzati di un tipo specificato vengono applicati a un membro specificato.(Definito da CustomAttributeExtensions.)

Oggetto PropertyBuilder è sempre associato un TypeBuilder. Oggetto TypeBuilder. DefineProperty metodo verrà restituito un nuovo PropertyBuilder a un client.

Esempio di codice riportato di seguito viene illustrato come implementare le proprietà in un tipo dinamico utilizzando un PropertyBuilder ottenuto tramite TypeBuilder.DefineProperty per creare la struttura di proprietà e un oggetto associato MethodBuilder per implementare la logica IL all'interno della proprietà.


using System;
using System.Threading;
using System.Reflection;
using System.Reflection.Emit;

class PropertyBuilderDemo

{

   public static Type BuildDynamicTypeWithProperties() 
   {
        AppDomain myDomain = Thread.GetDomain();
        AssemblyName myAsmName = new AssemblyName();
        myAsmName.Name = "MyDynamicAssembly";

        // To generate a persistable assembly, specify AssemblyBuilderAccess.RunAndSave.
        AssemblyBuilder myAsmBuilder = myDomain.DefineDynamicAssembly(myAsmName,
                                                        AssemblyBuilderAccess.RunAndSave);
        // Generate a persistable single-module assembly.
        ModuleBuilder myModBuilder = 
            myAsmBuilder.DefineDynamicModule(myAsmName.Name, myAsmName.Name + ".dll");

        TypeBuilder myTypeBuilder = myModBuilder.DefineType("CustomerData", 
                                                        TypeAttributes.Public);

        FieldBuilder customerNameBldr = myTypeBuilder.DefineField("customerName",
                                                        typeof(string),
                                                        FieldAttributes.Private);

        // The last argument of DefineProperty is null, because the
        // property has no parameters. (If you don't specify null, you must
        // specify an array of Type objects. For a parameterless property,
        // use an array with no elements: new Type[] {})
        PropertyBuilder custNamePropBldr = myTypeBuilder.DefineProperty("CustomerName",
                                                         PropertyAttributes.HasDefault,
                                                         typeof(string),
                                                         null);

        // The property set and property get methods require a special
        // set of attributes.
        MethodAttributes getSetAttr = 
            MethodAttributes.Public | MethodAttributes.SpecialName |
                MethodAttributes.HideBySig;

        // Define the "get" accessor method for CustomerName.
        MethodBuilder custNameGetPropMthdBldr = 
            myTypeBuilder.DefineMethod("get_CustomerName",
                                       getSetAttr,        
                                       typeof(string),
                                       Type.EmptyTypes);

        ILGenerator custNameGetIL = custNameGetPropMthdBldr.GetILGenerator();

        custNameGetIL.Emit(OpCodes.Ldarg_0);
        custNameGetIL.Emit(OpCodes.Ldfld, customerNameBldr);
        custNameGetIL.Emit(OpCodes.Ret);

        // Define the "set" accessor method for CustomerName.
        MethodBuilder custNameSetPropMthdBldr = 
            myTypeBuilder.DefineMethod("set_CustomerName",
                                       getSetAttr,     
                                       null,
                                       new Type[] { typeof(string) });

        ILGenerator custNameSetIL = custNameSetPropMthdBldr.GetILGenerator();

        custNameSetIL.Emit(OpCodes.Ldarg_0);
        custNameSetIL.Emit(OpCodes.Ldarg_1);
        custNameSetIL.Emit(OpCodes.Stfld, customerNameBldr);
        custNameSetIL.Emit(OpCodes.Ret);

        // Last, we must map the two methods created above to our PropertyBuilder to 
        // their corresponding behaviors, "get" and "set" respectively. 
        custNamePropBldr.SetGetMethod(custNameGetPropMthdBldr);
        custNamePropBldr.SetSetMethod(custNameSetPropMthdBldr);


        Type retval = myTypeBuilder.CreateType();

        // Save the assembly so it can be examined with Ildasm.exe,
        // or referenced by a test program.
        myAsmBuilder.Save(myAsmName.Name + ".dll");
        return retval;
   }

   public static void Main() 
   {
        Type custDataType = BuildDynamicTypeWithProperties();

        PropertyInfo[] custDataPropInfo = custDataType.GetProperties();
        foreach (PropertyInfo pInfo in custDataPropInfo) {
           Console.WriteLine("Property '{0}' created!", pInfo.ToString());
        }

        Console.WriteLine("---");
        // Note that when invoking a property, you need to use the proper BindingFlags -
        // BindingFlags.SetProperty when you invoke the "set" behavior, and 
        // BindingFlags.GetProperty when you invoke the "get" behavior. Also note that
        // we invoke them based on the name we gave the property, as expected, and not
        // the name of the methods we bound to the specific property behaviors.

        object custData = Activator.CreateInstance(custDataType);
        custDataType.InvokeMember("CustomerName", BindingFlags.SetProperty,
                                      null, custData, new object[]{ "Joe User" });

        Console.WriteLine("The customerName field of instance custData has been set to '{0}'.",
                           custDataType.InvokeMember("CustomerName", BindingFlags.GetProperty,
                                                      null, custData, new object[]{ }));
   }

}

// --- O U T P U T ---
// The output should be as follows:
// -------------------
// Property 'System.String CustomerName [System.String]' created!
// ---
// The customerName field of instance custData has been set to 'Joe User'.
// -------------------

.NET Framework
Disponibile da 1.1
Silverlight
Disponibile da 2.0

I membri statici pubblici ( Condiviso in Visual Basic) di questo tipo è thread safe. Non tutti i membri di istanza sono garantiti come thread safe.

Torna all'inizio
Mostra: