Consumir WebMethod que devuelve Lista Generica

13/11/2008 - 05:38 por Carlos H | Informe spam
Hola a todos.

Pues resulta que tengo un webservice con un WebMethod tipo Lista Generica,
mas o menos así:

[WebMethod(Description = "Lista Habilitaba para Combos 2")]
public List<lstCombo> get_lstCombo2(Int32 pTipo)
{
List<lstCombo> MyList = new List<lstCombo>();
SqlDataAdapter da;
DataSet dsTabla = new DataSet();
SqlCommand sc = new SqlCommand();

sc.Connection = sqlConn;
sc.CommandType = CommandType.StoredProcedure;
switch (pTipo)
{
case 1:
sc.CommandText = "llena_combo_get";
break;
}

OpenConnection();
da = new SqlDataAdapter(sc);
da.Fill(dsTabla);
CloseConnection();

if (dsTabla.Tables[0].Rows.Count > 0)
{
foreach (DataRow item in dsTabla.Tables[0].Rows)
{
lstCombo registro = new lstCombo();
registro.data = (Int32)item["data"];
registro.label = (string)item["label"];
MyList.Add(registro);
}
}
else
{
lstCombo registro = new lstCombo();
registro.data = 0;
registro.label = "Ninguno";
MyList.Add(registro);
}

return MyList;
}

______________________
LISTA es una clase:

using System;
using System.Collections.Generic;
using System.Text;

public class Lista
{
public Lista() { }

Int32 _data = 0;
string _label = "";

public Int32 data
{
set { _data = value; }
get { return _data; }
}

public string label
{
set { _label = value; }
get { return _label; }
}


}

Y desde un una Aplicación Windows hecha tambien con C#, no se como invocarla
e intentado de esta forma:

ExalAr.WS.exalar ws = new ExalAr.WS.exalar();
List<ExalAr.WS.lstCombo> lst = ws.get_lstCombo2(1);
y nada

me envia es error:

Cannot implicitly convert type 'ExalAr.WS.lstCombo[]' to
'System.Collections.Generic.List<ExalAr.WS.lstComb o>'


También intenté así:

ExalAr.WS.exalar ws = new ExalAr.WS.exalar();
List<Lista> lst = ws.get_lstCombo2(1);

y tampoco, no jala.

Me envía este error:

Cannot implicitly convert type 'ExalAr.WS.lstCombo[]' to
'System.Collections.Generic.List<Lista>'

_________________________________
que será que puede estar pasando, el WS lo he probado desde el web y si
funciona bien, pero no se como recoibir los datos devueltos en un Form de C#

Les agradezco toda la ayuda que me puedan brindar...

Me podría iluminar un poco? porque para mi esto no es tan trivial.

qué estaré haciendo mal?

Saludos
 

Leer las respuestas

#1 Octavio Hernandez
13/11/2008 - 14:14 | Informe spam
Carlos,

En vez de:

List<ExalAr.WS.lstCombo> lst = ws.get_lstCombo2(1);

utiliza:

ExalAr.WS.lstCombo[] lst = ws.get_lstCombo2(1);

Las listas genéricas se serializan como arrays.

Slds - Octavio




"Carlos H" wrote in message
news:
Hola a todos.

Pues resulta que tengo un webservice con un WebMethod tipo Lista Generica,
mas o menos así:

[WebMethod(Description = "Lista Habilitaba para Combos 2")]
public List<lstCombo> get_lstCombo2(Int32 pTipo)
{
List<lstCombo> MyList = new List<lstCombo>();
SqlDataAdapter da;
DataSet dsTabla = new DataSet();
SqlCommand sc = new SqlCommand();

sc.Connection = sqlConn;
sc.CommandType = CommandType.StoredProcedure;
switch (pTipo)
{
case 1:
sc.CommandText = "llena_combo_get";
break;
}

OpenConnection();
da = new SqlDataAdapter(sc);
da.Fill(dsTabla);
CloseConnection();

if (dsTabla.Tables[0].Rows.Count > 0)
{
foreach (DataRow item in dsTabla.Tables[0].Rows)
{
lstCombo registro = new lstCombo();
registro.data = (Int32)item["data"];
registro.label = (string)item["label"];
MyList.Add(registro);
}
}
else
{
lstCombo registro = new lstCombo();
registro.data = 0;
registro.label = "Ninguno";
MyList.Add(registro);
}

return MyList;
}

______________________
LISTA es una clase:

using System;
using System.Collections.Generic;
using System.Text;

public class Lista
{
public Lista() { }

Int32 _data = 0;
string _label = "";

public Int32 data
{
set { _data = value; }
get { return _data; }
}

public string label
{
set { _label = value; }
get { return _label; }
}


}

Y desde un una Aplicación Windows hecha tambien con C#, no se como
invocarla e intentado de esta forma:

ExalAr.WS.exalar ws = new ExalAr.WS.exalar();
List<ExalAr.WS.lstCombo> lst = ws.get_lstCombo2(1);
y nada

me envia es error:

Cannot implicitly convert type 'ExalAr.WS.lstCombo[]' to
'System.Collections.Generic.List<ExalAr.WS.lstComb o>'


También intenté así:

ExalAr.WS.exalar ws = new ExalAr.WS.exalar();
List<Lista> lst = ws.get_lstCombo2(1);

y tampoco, no jala.

Me envía este error:

Cannot implicitly convert type 'ExalAr.WS.lstCombo[]' to
'System.Collections.Generic.List<Lista>'

_________________________________
que será que puede estar pasando, el WS lo he probado desde el web y si
funciona bien, pero no se como recoibir los datos devueltos en un Form de
C#

Les agradezco toda la ayuda que me puedan brindar...

Me podría iluminar un poco? porque para mi esto no es tan trivial.

qué estaré haciendo mal?

Saludos

Preguntas similares