Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale
Questo argomento non è stato ancora valutato - Valuta questo argomento

Classe PropertyBuilder

Definisce le proprietà di un tipo.

Spazio dei nomi:  System.Reflection.Emit
Assembly:  mscorlib (in mscorlib.dll)
[ClassInterfaceAttribute(ClassInterfaceType.None)]
[ComVisibleAttribute(true)]
[HostProtectionAttribute(SecurityAction.LinkDemand, MayLeakOnAbort = true)]
public sealed class PropertyBuilder : PropertyInfo, 
	_PropertyBuilder

Il tipo PropertyBuilder espone i seguenti membri.

  NomeDescrizione
Proprietà pubblicaAttributesottiene gli attributi per questa proprietà. (Esegue l'override di PropertyInfo.Attributes).
Proprietà pubblicaCanReadottiene un valore che indica se la proprietà può essere letta. (Esegue l'override di PropertyInfo.CanRead).
Proprietà pubblicaCanWriteOttiene un valore che indica se alla proprietà può essere scritta. (Esegue l'override di PropertyInfo.CanWrite).
Proprietà pubblicaCustomAttributesOttiene una raccolta che contiene gli attributi personalizzati del membro. (Ereditato da MemberInfo)
Proprietà pubblicaDeclaringTypeOttiene la classe che dichiara il membro. (Esegue l'override di MemberInfo.DeclaringType).
Proprietà pubblicaGetMethodOttiene la funzione di accesso get per questa proprietà. (Ereditato da PropertyInfo)
Proprietà pubblicaIsSpecialNameOttiene un valore che indica se la proprietà è il nome speciale. (Ereditato da PropertyInfo)
Proprietà pubblicaMemberTypeOttiene un valore MemberTypes che indica che questo membro è una proprietà. (Ereditato da PropertyInfo)
Proprietà pubblicaMetadataTokenOttiene un valore che identifica un elemento di metadati. (Ereditato da MemberInfo)
Proprietà pubblicaModuleOttiene il modulo in cui il tipo che dichiara la proprietà corrente è definito. (Esegue l'override di MemberInfo.Module).
Proprietà pubblicaNameOttiene il nome del membro. (Esegue l'override di MemberInfo.Name).
Proprietà pubblicaPropertyTokenrecupera il token per questa proprietà.
Proprietà pubblicaPropertyTypeOttiene il tipo del campo di questa proprietà. (Esegue l'override di PropertyInfo.PropertyType).
Proprietà pubblicaReflectedTypeOttiene l'oggetto di cui è stato utilizzato per ottenere questa istanza MemberInfo. (Esegue l'override di MemberInfo.ReflectedType).
Proprietà pubblicaSetMethodOttiene la funzione di accesso set per questa proprietà. (Ereditato da PropertyInfo)
In alto
  NomeDescrizione
Metodo pubblicoAddOtherMethodAggiunge uno degli altri metodi associati a questa proprietà.
Metodo pubblicoEquals Restituisce un valore che indica se l'istanza è uguale ad un oggetto specificato. (Ereditato da PropertyInfo)
Metodo pubblicoGetAccessors()Restituisce una matrice i cui elementi riflettono i metodi pubblici get, set e altre funzioni di accesso della proprietà riflesse dall'istanza corrente. (Ereditato da PropertyInfo)
Metodo pubblicoGetAccessors(Boolean)Restituisce una matrice pubblici e non pubblico get e set funzioni di accesso su questa proprietà. (Esegue l'override di PropertyInfo.GetAccessors(Boolean)).
Metodo pubblicoGetConstantValueRestituisce un valore letterale associato da un compilatore alla proprietà. (Ereditato da PropertyInfo)
Metodo pubblicoGetCustomAttributes(Boolean)restituisce una matrice di tutti gli attributi personalizzati per questa proprietà. (Esegue l'override di MemberInfo.GetCustomAttributes(Boolean)).
Metodo pubblicoGetCustomAttributes(Type, Boolean)Restituisce una matrice di attributi personalizzati identificati da Type. (Esegue l'override di MemberInfo.GetCustomAttributes(Type, Boolean)).
Metodo pubblicoGetCustomAttributesDataRestituisce un elenco di oggetti CustomAttributeData che rappresentano i dati sugli attributi applicati al membro di destinazione. (Ereditato da MemberInfo)
Metodo pubblicoGetGetMethod()Restituisce la funzione di accesso pubblica get per questa proprietà. (Ereditato da PropertyInfo)
Metodo pubblicoGetGetMethod(Boolean)Restituisce la funzione di accesso get pubblico e non pubblico per questa proprietà. (Esegue l'override di PropertyInfo.GetGetMethod(Boolean)).
Metodo pubblicoGetHashCode Restituisce il codice hash per l'istanza corrente. (Ereditato da PropertyInfo)
Metodo pubblicoGetIndexParametersrestituisce una matrice di tutti i parametri di indice per la proprietà. (Esegue l'override di PropertyInfo.GetIndexParameters()).
Metodo pubblicoGetOptionalCustomModifiersRestituisce una matrice di tipi che rappresentano i modificatori personalizzati facoltativi della proprietà. (Ereditato da PropertyInfo)
Metodo pubblicoGetRawConstantValueRestituisce un valore letterale associato da un compilatore alla proprietà. (Ereditato da PropertyInfo)
Metodo pubblicoGetRequiredCustomModifiersRestituisce una matrice di tipi che rappresentano i modificatori personalizzati obbligatori della proprietà. (Ereditato da PropertyInfo)
Metodo pubblicoGetSetMethod()Restituisce la funzione di accesso set pubblica per questa proprietà. (Ereditato da PropertyInfo)
Metodo pubblicoGetSetMethod(Boolean)Restituisce la funzione di accesso set per questa proprietà. (Esegue l'override di PropertyInfo.GetSetMethod(Boolean)).
Metodo pubblicoGetTypeOttiene l'oggetto Type dell'istanza corrente. (Ereditato da Object)
Metodo pubblicoGetValue(Object)Restituisce il valore della proprietà di un oggetto specificato. (Ereditato da PropertyInfo)
Metodo pubblicoGetValue(Object, Object[])Ottiene il valore di una proprietà indicizzata chiamando il metodo di richiamo della proprietà. (Esegue l'override di PropertyInfo.GetValue(Object, Object[])).
Metodo pubblicoGetValue(Object, BindingFlags, Binder, Object[], CultureInfo)Ottiene il valore di una proprietà con l'associazione specificata, indici e CultureInfo. (Esegue l'override di PropertyInfo.GetValue(Object, BindingFlags, Binder, Object[], CultureInfo)).
Metodo pubblicoIsDefinedIndica di se uno o più istanze attributeType viene definito in questa proprietà. (Esegue l'override di MemberInfo.IsDefined(Type, Boolean)).
Metodo pubblicoSetConstantImposta il valore predefinito di questa proprietà.
Metodo pubblicoSetCustomAttribute(CustomAttributeBuilder)Impostare un attributo personalizzato utilizzando un generatore di attributi personalizzati.
Metodo pubblicoSetCustomAttribute(ConstructorInfo, Byte[])Impostare un attributo personalizzato tramite un attributo personalizzato specificato BLOB.
Metodo pubblicoSetGetMethodImposta il metodo che ottiene il valore della proprietà.
Metodo pubblicoSetSetMethodImposta il metodo che imposta il valore della proprietà.
Metodo pubblicoSetValue(Object, Object)Imposta il valore della proprietà di un oggetto specificato. (Ereditato da PropertyInfo)
Metodo pubblicoSetValue(Object, Object, Object[])Imposta il valore della proprietà con i valori di indice facoltativi per le proprietà dell'indice. (Esegue l'override di PropertyInfo.SetValue(Object, Object, Object[])).
Metodo pubblicoSetValue(Object, Object, BindingFlags, Binder, Object[], CultureInfo)Imposta il valore della proprietà per l'oggetto specificato il valore specificato. (Esegue l'override di PropertyInfo.SetValue(Object, Object, BindingFlags, Binder, Object[], CultureInfo)).
Metodo pubblicoToString Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object)
In alto
  NomeDescrizione
Metodo di estensione pubblicoGetCustomAttribute(Type)Sottoposto a overload. Recupera un attributo personalizzato di un tipo specificato che si applica a un membro specificato. (Definito da CustomAttributeExtensions).
Metodo di estensione pubblicoGetCustomAttribute(Type, Boolean)Sottoposto a overload. Recupera un attributo personalizzato di un tipo specificato che si applica a un membro specificato e verifica eventualmente i predecessori del membro. (Definito da CustomAttributeExtensions).
Metodo di estensione pubblicoGetCustomAttribute<T>()Sottoposto a overload. Recupera un attributo personalizzato di un tipo specificato che si applica a un membro specificato. (Definito da CustomAttributeExtensions).
Metodo di estensione pubblicoGetCustomAttribute<T>(Boolean)Sottoposto a overload. Recupera un attributo personalizzato di un tipo specificato che si applica a un membro specificato e verifica eventualmente i predecessori del membro. (Definito da CustomAttributeExtensions).
Metodo di estensione pubblicoGetCustomAttributes()Sottoposto a overload. Recupera una raccolta di attributi personalizzati applicabili a un membro specificato. (Definito da CustomAttributeExtensions).
Metodo di estensione pubblicoGetCustomAttributes(Type)Sottoposto a overload. Recupera una raccolta di attributi personalizzati di un tipo specificato che si applicano a un membro specificato. (Definito da CustomAttributeExtensions).
Metodo di estensione pubblicoGetCustomAttributes<T>()Sottoposto a overload. Recupera una raccolta di attributi personalizzati di un tipo specificato che si applicano a un membro specificato. (Definito da CustomAttributeExtensions).
Metodo di estensione pubblicoGetCustomAttributes<T>(Boolean)Sottoposto a overload. Recupera una raccolta di attributi personalizzati di un tipo specificato che si applicano a un membro specificato e verifica eventualmente i predecessori del membro. (Definito da CustomAttributeExtensions).
Metodo di estensione pubblicoIsDefinedIndica se gli attributi personalizzati di un tipo specificato si applicano a un membro specificato. (Definito da CustomAttributeExtensions).
In alto
  NomeDescrizione
Implementazione esplicita dell'interfacciaMetodo privato_MemberInfo.GetIDsOfNames Esegue il mapping di un set di nomi a un corrispondente set di identificatori di dispatch. (Ereditato da MemberInfo)
Implementazione esplicita dell'interfacciaMetodo privato_MemberInfo.GetTypeOttiene un oggetto Type che rappresenta la classe MemberInfo. (Ereditato da MemberInfo)
Implementazione esplicita dell'interfacciaMetodo privato_MemberInfo.GetTypeInfoRecupera le informazioni sul tipo relative a un oggetto che può quindi essere utilizzato per ottenere informazioni sul tipo relative a un'interfaccia. (Ereditato da MemberInfo)
Implementazione esplicita dell'interfacciaMetodo privato_MemberInfo.GetTypeInfoCount Recupera il numero di interfacce di informazioni sui tipi che un oggetto fornisce (0 o 1). (Ereditato da MemberInfo)
Implementazione esplicita dell'interfacciaMetodo privato_MemberInfo.Invoke Fornisce l'accesso alle proprietà ed ai metodi esposti da un oggetto. (Ereditato da MemberInfo)
Implementazione esplicita dell'interfacciaMetodo privato_PropertyBuilder.GetIDsOfNames Esegue il mapping di un set di nomi a un corrispondente set di identificatori di dispatch.
Implementazione esplicita dell'interfacciaMetodo privato_PropertyBuilder.GetTypeInfoRecupera le informazioni sui tipi per un oggetto, che può quindi essere utilizzato per ottenere informazioni sul tipo per un'interfaccia.
Implementazione esplicita dell'interfacciaMetodo privato_PropertyBuilder.GetTypeInfoCount Recupera il numero di interfacce di informazioni sui tipi che un oggetto fornisce (0 o 1).
Implementazione esplicita dell'interfacciaMetodo privato_PropertyBuilder.Invoke Fornisce l'accesso alle proprietà ed ai metodi esposti da un oggetto.
Implementazione esplicita dell'interfacciaMetodo privato_PropertyInfo.GetIDsOfNames Esegue il mapping di un set di nomi a un corrispondente set di identificatori di dispatch. (Ereditato da PropertyInfo)
Implementazione esplicita dell'interfacciaMetodo privato_PropertyInfo.GetTypeOttiene un oggetto Type che rappresenta il tipo PropertyInfo. (Ereditato da PropertyInfo)
Implementazione esplicita dell'interfacciaMetodo privato_PropertyInfo.GetTypeInfoRecupera le informazioni sul tipo relative a un oggetto che può quindi essere utilizzato per ottenere informazioni sul tipo relative a un'interfaccia. (Ereditato da PropertyInfo)
Implementazione esplicita dell'interfacciaMetodo privato_PropertyInfo.GetTypeInfoCount Recupera il numero di interfacce di informazioni sui tipi che un oggetto fornisce (0 o 1). (Ereditato da PropertyInfo)
Implementazione esplicita dell'interfacciaMetodo privato_PropertyInfo.Invoke Fornisce l'accesso alle proprietà ed ai metodi esposti da un oggetto. (Ereditato da PropertyInfo)
In alto

In PropertyBuilder è sempre associato a un oggetto TypeBuilder. TypeBuilder . DefineProperty il metodo restituirà un nuovo PropertyBuilder nel client.

NotaNota

L'attributo HostProtectionAttribute applicato a questo tipo di membro dispone del seguente valore per la proprietà Resources: MayLeakOnAbort. L'oggetto HostProtectionAttribute non influisce sulle applicazioni desktop, che in genere vengono avviate facendo doppio clic sull'icona, digitando un comando oppure immettendo un URL in un browser. Per ulteriori informazioni, vedere la classe HostProtectionAttribute o programmazione per SQL Server e attributi di protezione host.

Nell'esempio di codice seguente viene illustrato come implementare le proprietà in un tipo dinamico utilizzando un oggetto TypeBuilder.DefineProperty verificato via MethodBuilder per creare il framework della proprietà e un oggetto associato di PropertyBuilder 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

Supportato in: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.
Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.
Il documento è risultato utile?
(1500 caratteri rimanenti)

Aggiunte alla community

AGGIUNGI
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
© 2013 Microsoft. Tutti i diritti riservati.