Duda sobre Web Services

26/10/2005 - 13:11 por Samuel | Informe spam
Hola a todos,

tengo un problema con una aplicación que utiliza web services. Tengo una
librería de clases que utilizo tanto en el web service como en la aplicación
cliente. El web service tiene métodos que me devuelven arrays de elementos.
Estos elementos de tipo propio definido en la librería de clases los necesito
cargar en un combobox.

El problema que tengo es que no puedo utilizar el método toString() para
visualizar la descripción del elemento en lugar de su tipo en el combobox. He
probado a utilizar la propiedad DisplayMember para visualizar un campo
concreto pero no me deja editar esta propiedad en el combobox.

Haciendo más pruebas he descubierto que si utilizo esta misma clase cargando
directamente la librería de clases en la aplicación cliente sí me permite
utilizar esta propiedad.

También he probado a hacer una conversión de tipo de un array del tipo
serializado por el web service al tipo de la librería de clases cargada en la
aplicación cliente, y como resultado he obtenido un error de Casting de tipos
en tiempo de ejecución.

Alguien sabe cómo solucionar este problema sin hacer travesuras como volver
a crear los elementos en el cliente con un Sub New(t As Tipo)?

Saludos y gracias de antemano.

Samuel Casanova

Preguntas similare

Leer las respuestas

#1 dsadas
26/10/2005 - 13:54 | Informe spam
Hola Samuel.
No se si esto es lo que te pasa pero mi pregnuta es si en la clase donde
defines el tipo de objecto que quiers almacenar en los arraylist tienen
propiedades definidas.

He probado y a mi en un pricipio me mostraba el tipo de objecto. Para que
no suceda esto añade propiedades de solo lectura a tu clase tipo.

Ejemplo:

Public Class Persona


Public Enum Tipo
Principiante
Experto
MVP
End Enum
Private _Nombre As String
Private _Tipo As String

Public Sub New(ByVal Nombre As String, ByVal Tipo As Tipo)
_Nombre = Nombre
_Tipo = Tipo
End Sub
Public ReadOnly Property Nombre() As String
Get
Return _Nombre
End Get

End Property



End Class


en el combobox:
me.combo.displaymenber="Nombre"
me.combo.datasource=webservice.ObtenerPersonas()
Espero que te sirva.
Un saludo
Carlos
"Samuel" escribió:

Hola a todos,

tengo un problema con una aplicación que utiliza web services. Tengo una
librería de clases que utilizo tanto en el web service como en la aplicación
cliente. El web service tiene métodos que me devuelven arrays de elementos.
Estos elementos de tipo propio definido en la librería de clases los necesito
cargar en un combobox.

El problema que tengo es que no puedo utilizar el método toString() para
visualizar la descripción del elemento en lugar de su tipo en el combobox. He
probado a utilizar la propiedad DisplayMember para visualizar un campo
concreto pero no me deja editar esta propiedad en el combobox.

Haciendo más pruebas he descubierto que si utilizo esta misma clase cargando
directamente la librería de clases en la aplicación cliente sí me permite
utilizar esta propiedad.

También he probado a hacer una conversión de tipo de un array del tipo
serializado por el web service al tipo de la librería de clases cargada en la
aplicación cliente, y como resultado he obtenido un error de Casting de tipos
en tiempo de ejecución.

Alguien sabe cómo solucionar este problema sin hacer travesuras como volver
a crear los elementos en el cliente con un Sub New(t As Tipo)?

Saludos y gracias de antemano.

Samuel Casanova
Respuesta Responder a este mensaje
#2 Samuel
26/10/2005 - 20:20 | Informe spam
Sí que tengo propiedades definidas, y me las serializa bien. He probado a
declararlas como ReadOnly y es entonces cuando no me las exporta.

Algo muy parecido a lo que tu has puesto tengo yo. Si debugo la aplicación
cliente, después de hacer el me.combo.displaymenber="Nombre" tengo una bonita
cadena vacía en esta propiedad del combobox. Lo has probado y te ha
funcionado??? Si es así no entiendo como no me funciona a mí. A ver si a
alguien se le ocurre algo que pueda ayudarme.

Saludos.
Samuel Casanova


"dsadas" wrote:

Hola Samuel.
No se si esto es lo que te pasa pero mi pregnuta es si en la clase donde
defines el tipo de objecto que quiers almacenar en los arraylist tienen
propiedades definidas.

He probado y a mi en un pricipio me mostraba el tipo de objecto. Para que
no suceda esto añade propiedades de solo lectura a tu clase tipo.

Ejemplo:

Public Class Persona


Public Enum Tipo
Principiante
Experto
MVP
End Enum
Private _Nombre As String
Private _Tipo As String

Public Sub New(ByVal Nombre As String, ByVal Tipo As Tipo)
_Nombre = Nombre
_Tipo = Tipo
End Sub
Public ReadOnly Property Nombre() As String
Get
Return _Nombre
End Get

End Property



End Class


en el combobox:
me.combo.displaymenber="Nombre"
me.combo.datasource=webservice.ObtenerPersonas()
Espero que te sirva.
Un saludo
Carlos
"Samuel" escribió:

> Hola a todos,
>
> tengo un problema con una aplicación que utiliza web services. Tengo una
> librería de clases que utilizo tanto en el web service como en la aplicación
> cliente. El web service tiene métodos que me devuelven arrays de elementos.
> Estos elementos de tipo propio definido en la librería de clases los necesito
> cargar en un combobox.
>
> El problema que tengo es que no puedo utilizar el método toString() para
> visualizar la descripción del elemento en lugar de su tipo en el combobox. He
> probado a utilizar la propiedad DisplayMember para visualizar un campo
> concreto pero no me deja editar esta propiedad en el combobox.
>
> Haciendo más pruebas he descubierto que si utilizo esta misma clase cargando
> directamente la librería de clases en la aplicación cliente sí me permite
> utilizar esta propiedad.
>
> También he probado a hacer una conversión de tipo de un array del tipo
> serializado por el web service al tipo de la librería de clases cargada en la
> aplicación cliente, y como resultado he obtenido un error de Casting de tipos
> en tiempo de ejecución.
>
> Alguien sabe cómo solucionar este problema sin hacer travesuras como volver
> a crear los elementos en el cliente con un Sub New(t As Tipo)?
>
> Saludos y gracias de antemano.
>
> Samuel Casanova
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida