none
WSDL.EXE e Enumeráveis. (No JAVA funciona, no dotNet não) RRS feed

  • Pergunta

  • Gerei uma interface através das WSDLs, e existem campos com tipos específicos no schema, estes ao qual, foram gerados como tipos enumeráveis (public enum ...). 

    O problema está quando efetuo o consumo do webservice, quando estou gerando a classe a ser transmitida, não posso deixar esses valores nulos, pois são obrigatórios, e ao invés de chegarem nulos ao ws para validação, eles chegam valorados com o primeiro item do tipo enumerável.

    Alguém sabe me dizer se isso é por causa dos enumeráveis ou se é a maneira como o dotnet trata esses itens obrigatórios???

    Tenho o mesmo projeto em JAVA e NÃO acontece isso. Estou começando a acreditar que é um problema na maneira como o dotnet trata esse tipo de situação.


    .:: Contribua com o fórum! Marque como útil os posts que lhe ajudam e marque como resposta aqueles que resolvem a dúvida do post. ::.

    Marco Aurélio Ferdinando Jr.

    terça-feira, 19 de novembro de 2013 11:06

Respostas

  • Tipos enumerados não possuem valor nulo no .net, você deve ter uma enumeração que determine o nulo para você, por exemplo, o valor 0 nas enumerações que desenvolvo, sempre considero valor inválido.


    Gilson Joanelo - Desenvolvedor Web

    terça-feira, 1 de abril de 2014 23:50

Todas as Respostas

  • Tipos enumerados não herdam a classe Serializable, somente objetos nativos como int, string e objetos que implementem a classe serializable podem ser serializados pelo webservice, isso serve também para Arrays.

    Somente objetos que podem ser serializados podem trafegar no webservice.

    O que pode ser feito no teu caso é passar um short do valor enumerado

    Exemplo de retorno do webservice: (short)Tipo.Valor

    E do outro lado recuperar o tipo enum

    Exemplo: var vEnum = (Tipo)returno werbservce

    Já passei por isso.


    Gilson Joanelo - Desenvolvedor Web

    sexta-feira, 6 de dezembro de 2013 23:58
  • Gilson, obrigado pela resposta, mas ainda não é isso..

    Esses tipos estão trafegando pelo WS normalmente, porém não consigo passar nulo neles. Sempre que deixo o campo nulo do lado cliente, ao chegar no servidor ele está valorado.


    .:: Contribua com o fórum! Marque como útil os posts que lhe ajudam e marque como resposta aqueles que resolvem a dúvida do post. ::.

    Marco Aurélio Ferdinando Jr.

    segunda-feira, 9 de dezembro de 2013 11:03
  • Entendi, enum não aceita null, eu tenho uma regra onde se chegar "0" ou "-1" é inválido, com isso todos os meus enumeradores são definidos com o item NaoDefinido = 0 este sempre será considerado como inválido pela minha regra de negócio.

    Gilson Joanelo - Desenvolvedor Web

    segunda-feira, 9 de dezembro de 2013 22:03
  • Tipos enumerados não possuem valor nulo no .net, você deve ter uma enumeração que determine o nulo para você, por exemplo, o valor 0 nas enumerações que desenvolvo, sempre considero valor inválido.


    Gilson Joanelo - Desenvolvedor Web

    terça-feira, 1 de abril de 2014 23:50
  • Agora eu entendo, o jeito é alterar a estrutura do enum mesmo e adicionar o primeiro item para fazer esse papel. O WSDL não tem nada a ver com isso afinal. Obrigado Gilson!


    .:: Contribua com o fórum! Marque como útil os posts que lhe ajudam e marque como resposta aqueles que resolvem a dúvida do post. ::.

    Marco Aurélio Ferdinando Jr.

    quarta-feira, 2 de abril de 2014 12:21