Usuário com melhor resposta
WSDL.EXE e Enumeráveis. (No JAVA funciona, no dotNet não)

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.
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
- Marcado como Resposta Marco A. Ferdinando Jr quarta-feira, 2 de abril de 2014 12:17
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
-
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. -
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
-
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
- Marcado como Resposta Marco A. Ferdinando Jr quarta-feira, 2 de abril de 2014 12:17
-
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.