none
Problemas para obter DescriptionAttributes de Enumerator em cliente WCF. RRS feed

  • Pergunta

  • Olaa,

                   Possuo um Enumarator exposto em um WCF, conforme mostradoa abaixo:

    using System;
    using System.Collections.Generic;
    using System.Runtime.Serialization;
    using System.ComponentModel;
    
    namespace Cliente
    {
        [DataContract]
        public enum OperacoesEnumerador
        {
            [EnumMember]
            [DescriptionAttribute("Inserção")]
            Insercao = 1,
    
            [EnumMember]
            [DescriptionAttribute("Atualização")]
            Atualizacao = 2,
    
            [EnumMember]
            [DescriptionAttribute("Exclusão")]
            Exclusao = 3
        }
    }

    Mas estou tentando obter os valores das Description Attributes no cliente,  mas não obtive sucesso, devido a tal fato segue abaixo algumas dúvidas:

    1) O WCF realmente expõe os valores da DescriptionAttribute ? Se não, porque ? Se sim, como devo realmente proceder para obter os valores das DescriptionsAttribute no cliente ?

    Desde já, Agradeço.

    quinta-feira, 22 de março de 2012 13:47

Respostas

  • Boa noite Rodrigo,

    o que acontece é que o enum, como todos os outros objetos, é serializado para que seja acessado via WCF, e a serialização não contempla o atributo Description.

    Para sanar seu problema utilize o EnumMemberAttribute, que é recriado no client junto com a referência de acesso ao serviço WCF.

    Segue exemplo:

    public enum RoomType  
    {  
        [EnumMember]  
        Kitchen,  
        [EnumMember(Value = "Living Room")]  
        LivingRoom,  
        [EnumMember(Value = "Dining Room")]  
        DiningRoom,  
        [EnumMember(Value = "Work/Guest Room")]  
        WorkGuestRoom,  
    }

    Mais sobre o atributo neste link: http://msdn.microsoft.com/library/system.runtime.serialization.enummemberattribute.aspx

    Abraços,


    Daniel Cheida de Oliveira


    • Editado Daniel Cheida segunda-feira, 9 de abril de 2012 23:08
    • Sugerido como Resposta Daniel Cheida segunda-feira, 9 de abril de 2012 23:08
    • Marcado como Resposta _dev sexta-feira, 20 de abril de 2012 01:56
    segunda-feira, 9 de abril de 2012 23:08

Todas as Respostas

  • Boa noite Rodrigo,

    o que acontece é que o enum, como todos os outros objetos, é serializado para que seja acessado via WCF, e a serialização não contempla o atributo Description.

    Para sanar seu problema utilize o EnumMemberAttribute, que é recriado no client junto com a referência de acesso ao serviço WCF.

    Segue exemplo:

    public enum RoomType  
    {  
        [EnumMember]  
        Kitchen,  
        [EnumMember(Value = "Living Room")]  
        LivingRoom,  
        [EnumMember(Value = "Dining Room")]  
        DiningRoom,  
        [EnumMember(Value = "Work/Guest Room")]  
        WorkGuestRoom,  
    }

    Mais sobre o atributo neste link: http://msdn.microsoft.com/library/system.runtime.serialization.enummemberattribute.aspx

    Abraços,


    Daniel Cheida de Oliveira


    • Editado Daniel Cheida segunda-feira, 9 de abril de 2012 23:08
    • Sugerido como Resposta Daniel Cheida segunda-feira, 9 de abril de 2012 23:08
    • Marcado como Resposta _dev sexta-feira, 20 de abril de 2012 01:56
    segunda-feira, 9 de abril de 2012 23:08
  • Prezado Daniel Cheida.

                                        Novamente gostaria de agradecer imensamente pela ajuda. Minha dúvida foi sanada.

    Um grande abraço.

    E novamente muito obrigado.

    sexta-feira, 20 de abril de 2012 01:56