Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

Classe PropertyBuilder

Define as propriedades para um tipo.

Namespace:  System.Reflection.Emit
Assembly:  mscorlib (em mscorlib.dll)

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

O tipo PropertyBuilder expõe os membros a seguir.

  NomeDescrição
Propriedade públicaAttributesObtém os atributos para essa propriedade. (Substitui PropertyInfo.Attributes.)
Propriedade públicaCanReadObtém um valor indicando se a propriedade pode ser lido. (Substitui PropertyInfo.CanRead.)
Propriedade públicaCanWriteObtém um valor indicando se a propriedade pode ser gravada. (Substitui PropertyInfo.CanWrite.)
Propriedade públicaCustomAttributesObtém uma coleção que contém os atributos personalizados deste membro. (Herdado de MemberInfo.)
Propriedade públicaDeclaringTypeObtém a classe que declara este membro. (Substitui MemberInfo.DeclaringType.)
Propriedade públicaGetMethodObtém o acessador de get para essa propriedade. (Herdado de PropertyInfo.)
Propriedade públicaIsSpecialNameObtém um valor que indica se a propriedade é o nome especial. (Herdado de PropertyInfo.)
Propriedade públicaMemberTypeObtém um valor de MemberTypes que indica que esse membro é uma propriedade. (Herdado de PropertyInfo.)
Propriedade públicaMetadataTokenObtém um valor que identifica um elemento de metadados. (Herdado de MemberInfo.)
Propriedade públicaModuleObtém o módulo no qual o tipo que declara a propriedade atual está sendo definido. (Substitui MemberInfo.Module.)
Propriedade públicaNameObtém o nome desse membro. (Substitui MemberInfo.Name.)
Propriedade públicaPropertyTokenRecupera o token para essa propriedade.
Propriedade públicaPropertyTypeObtém o tipo do campo desta propriedade. (Substitui PropertyInfo.PropertyType.)
Propriedade públicaReflectedTypeObtém o objeto de classe que foi usado para obter esta instância do MemberInfo. (Substitui MemberInfo.ReflectedType.)
Propriedade públicaSetMethodObtém o acessador de set para essa propriedade. (Herdado de PropertyInfo.)
Superior

  NomeDescrição
Método públicoAddOtherMethodAdiciona um dos outros métodos associados a esta propriedade.
Método públicoEquals Retorna um valor que indica se essa instância é igual a um objeto especificado. (Herdado de PropertyInfo.)
Método públicoGetAccessors()Retorna uma matriz cujos elementos para refletir getutilitário, set, e outros acessadores da propriedade refletida pela instância atual. (Herdado de PropertyInfo.)
Método públicoGetAccessors(Boolean)Retorna uma matriz de público e não público get e set acessadores nessa propriedade. (Substitui PropertyInfo.GetAccessors(Boolean).)
Método públicoGetConstantValueRetorna um valor literal associado à propriedade por um compilador. (Herdado de PropertyInfo.)
Método públicoGetCustomAttributes(Boolean)Retorna uma matriz de todos os atributos personalizados para essa propriedade. (Substitui MemberInfo.GetCustomAttributes(Boolean).)
Método públicoGetCustomAttributes(Type, Boolean)Retorna uma matriz de atributos personalizados, identificado por Type. (Substitui MemberInfo.GetCustomAttributes(Type, Boolean).)
Método públicoGetCustomAttributesDataRetorna uma lista de CustomAttributeData objetos que representam dados sobre os atributos que foram aplicados ao membro de destino. (Herdado de MemberInfo.)
Método públicoGetGetMethod()Retorna o acessador utilitário de get para essa propriedade. (Herdado de PropertyInfo.)
Método públicoGetGetMethod(Boolean)Retorna o público e não público obter acessador para essa propriedade. (Substitui PropertyInfo.GetGetMethod(Boolean).)
Método públicoGetHashCode Retorna o hash code para essa instância. (Herdado de PropertyInfo.)
Método públicoGetIndexParametersRetorna uma matriz de todos os parâmetros de índice da propriedade. (Substitui PropertyInfo.GetIndexParameters().)
Método públicoGetOptionalCustomModifiersRetorna uma matriz de tipos que representam os modificadores personalizados opcionais da propriedade. (Herdado de PropertyInfo.)
Método públicoGetRawConstantValueRetorna um valor literal associado à propriedade por um compilador. (Herdado de PropertyInfo.)
Método públicoGetRequiredCustomModifiersRetorna uma matriz de tipos que representam os modificadores personalizados necessários da propriedade. (Herdado de PropertyInfo.)
Método públicoGetSetMethod()Retorna o acessador utilitário de set para essa propriedade. (Herdado de PropertyInfo.)
Método públicoGetSetMethod(Boolean)Retorna o acessador set para essa propriedade. (Substitui PropertyInfo.GetSetMethod(Boolean).)
Método públicoGetType Obtém o Type da instância atual. (Herdado de Object.)
Método públicoGetValue(Object)Retorna o valor da propriedade de um objeto especificado. (Herdado de PropertyInfo.)
Método públicoGetValue(Object, Object[])Obtém o valor da propriedade indexado, chamando o método da propriedade getter. (Substitui PropertyInfo.GetValue(Object, Object[]).)
Método públicoGetValue(Object, BindingFlags, Binder, Object[], CultureInfo)Obtém o valor de uma propriedade pode ter especificado ligação, índice, e CultureInfo. (Substitui PropertyInfo.GetValue(Object, BindingFlags, Binder, Object[], CultureInfo).)
Método públicoIsDefinedIndica se um ou mais instância de attributeType é definido nesta propriedade. (Substitui MemberInfo.IsDefined(Type, Boolean).)
Método públicoSetConstantDefine o valor padrão dessa propriedade.
Método públicoSetCustomAttribute(CustomAttributeBuilder)Defina um atributo personalizado usando um construtor de atributo personalizado.
Método públicoSetCustomAttribute(ConstructorInfo, Byte[])Defina um atributo personalizado usando um blob de atributo personalizado especificado.
Método públicoSetGetMethodDefine o método que obtém o valor da propriedade.
Método públicoSetSetMethodDefine o método que define o valor da propriedade.
Método públicoSetValue(Object, Object)Define o valor da propriedade de um objeto especificado. (Herdado de PropertyInfo.)
Método públicoSetValue(Object, Object, Object[])Define o valor da propriedade com valores de índice opcional para propriedades do índice. (Substitui PropertyInfo.SetValue(Object, Object, Object[]).)
Método públicoSetValue(Object, Object, BindingFlags, Binder, Object[], CultureInfo)Define o valor da propriedade para o objeto fornecido como o valor fornecido. (Substitui PropertyInfo.SetValue(Object, Object, BindingFlags, Binder, Object[], CultureInfo).)
Método públicoToStringRetorna uma string que representa o objeto atual. (Herdado de Object.)
Superior

  NomeDescrição
Método de extensão públicoGetCustomAttribute(Type)Sobrecarregado. Recupera um atributo personalizado de um tipo especificado que é aplicado a um membro especificado. (Definido por CustomAttributeExtensions.)
Método de extensão públicoGetCustomAttribute(Type, Boolean)Sobrecarregado. Recupera um atributo personalizado de um tipo especificado que é aplicado a um membro especificado, e inspecione opcionalmente os predecessores desse membro. (Definido por CustomAttributeExtensions.)
Método de extensão públicoGetCustomAttribute<T>()Sobrecarregado. Recupera um atributo personalizado de um tipo especificado que é aplicado a um membro especificado. (Definido por CustomAttributeExtensions.)
Método de extensão públicoGetCustomAttribute<T>(Boolean)Sobrecarregado. Recupera um atributo personalizado de um tipo especificado que é aplicado a um membro especificado, e inspecione opcionalmente os predecessores desse membro. (Definido por CustomAttributeExtensions.)
Método de extensão públicoGetCustomAttributes()Sobrecarregado. Recupera uma coleção de atributos personalizados que são aplicados a um membro especificado. (Definido por CustomAttributeExtensions.)
Método de extensão públicoGetCustomAttributes(Type)Sobrecarregado. Recupera uma coleção de atributos personalizados de um tipo especificado que são aplicados a um membro especificado. (Definido por CustomAttributeExtensions.)
Método de extensão públicoGetCustomAttributes<T>()Sobrecarregado. Recupera uma coleção de atributos personalizados de um tipo especificado que são aplicados a um membro especificado. (Definido por CustomAttributeExtensions.)
Método de extensão públicoGetCustomAttributes<T>(Boolean)Sobrecarregado. Recupera uma coleção de atributos personalizados de um tipo especificado que são aplicados a um membro especificado, e inspecione opcionalmente os predecessores desse membro. (Definido por CustomAttributeExtensions.)
Método de extensão públicoIsDefinedIndica se os atributos personalizados de um tipo especificado são aplicados a um membro especificado. (Definido por CustomAttributeExtensions.)
Superior

  NomeDescrição
Implementação explícita da interfaceMétodo particular_MemberInfo.GetIDsOfNamesMapeia um conjunto de nomes para um conjunto correspondente de identificadores de despacho. (Herdado de MemberInfo.)
Implementação explícita da interfaceMétodo particular_MemberInfo.GetTypeObtém um Type objeto que representa o MemberInfo classe. (Herdado de MemberInfo.)
Implementação explícita da interfaceMétodo particular_MemberInfo.GetTypeInfoRecupera as informações de tipo para um objeto, que pode ser usado para obter as informações de tipo para uma interface. (Herdado de MemberInfo.)
Implementação explícita da interfaceMétodo particular_MemberInfo.GetTypeInfoCountRecupera o número de interfaces de informações de tipo que um objeto fornece (0 ou 1). (Herdado de MemberInfo.)
Implementação explícita da interfaceMétodo particular_MemberInfo.InvokeFornece acesso a propriedades e métodos expostos por um objeto. (Herdado de MemberInfo.)
Implementação explícita da interfaceMétodo particular_PropertyBuilder.GetIDsOfNamesMapeia um conjunto de nomes para um conjunto correspondente de identificadores de despacho.
Implementação explícita da interfaceMétodo particular_PropertyBuilder.GetTypeInfoRecupera as informações de tipo para um objeto, que pode ser usado para obter as informações de tipo para uma interface.
Implementação explícita da interfaceMétodo particular_PropertyBuilder.GetTypeInfoCountRecupera o número de interfaces de informações de tipo que um objeto fornece (0 ou 1).
Implementação explícita da interfaceMétodo particular_PropertyBuilder.InvokeFornece acesso a propriedades e métodos expostos por um objeto.
Implementação explícita da interfaceMétodo particular_PropertyInfo.GetIDsOfNamesMapeia um conjunto de nomes para um conjunto correspondente de identificadores de expedição. (Herdado de PropertyInfo.)
Implementação explícita da interfaceMétodo particular_PropertyInfo.GetTypeObtém um objeto de Type que representa o tipo de PropertyInfo . (Herdado de PropertyInfo.)
Implementação explícita da interfaceMétodo particular_PropertyInfo.GetTypeInfoRecupera as informações do tipo de um objeto, que podem ser usadas para obter informações de tipo para uma interface. (Herdado de PropertyInfo.)
Implementação explícita da interfaceMétodo particular_PropertyInfo.GetTypeInfoCountRetorna o número de interfaces de informações do tipo que um objeto fornece (0 ou 1). (Herdado de PropertyInfo.)
Implementação explícita da interfaceMétodo particular_PropertyInfo.InvokeFornece acesso a propriedades e métodos expostos por um objeto. (Herdado de PropertyInfo.)
Superior

A PropertyBuilder está sempre associada com um TypeBuilder. O TypeBuilder. DefineProperty método retornará um novo PropertyBuilder a um cliente.

ObservaçãoObservação

O atributo HostProtectionAttribute aplicado a este tipo ou membro tem o seguinte valor da propriedade Resources: MayLeakOnAbort. HostProtectionAttribute não afeta aplicativos de área de trabalho (que são normalmente iniciados com o clique duplo em um ícone, a digitação de um comando ou a inserção de uma URL em um navegador). Para obter mais informações, consulte a classe HostProtectionAttribute ou Programação em SQL Server e atributos de proteção de host.

O exemplo de código a seguir demonstra como implementar propriedades em um tipo dinâmico usando um PropertyBuilder obtido por meio de TypeBuilder.DefineProperty para criar a estrutura de propriedade e um tipo de MethodBuilder para implementar a lógica de IL dentro da propriedade.



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

Com suporte em: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Com suporte em: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Função Server Core sem suporte), Windows Server 2008 R2 (Função Server Core com suporte com o SP1 ou posterior, Itanium sem suporte)

O .NET Framework não oferece suporte a todas as versões de cada plataforma. Para obter uma lista das versões com suporte, consulte Requisitos do sistema do .NET Framework.

Quaisquer membros estático (Shared no Visual Basic) públicos deste tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2015 Microsoft