Metodo generico en Wcf

21/08/2008 - 18:47 por Napoleon | Informe spam
Saludos,
Espero me puedan ayudar con este temita,
Estoy creando un servico en Wcf, que contiene algunos metodos, y aqlgunos de
ellos me reciben un <T> es decir el etodo esa diselñado de la siguienete
manera
public List<T> EjecutarConsulta<T>(GeneralInfo oGeneralInfo, object
objecto)
{
Function myFuncion = BusquedaMetodo(oGeneralInfo);
string path = myFuncion.FUN_NAMESPACE.Trim();
string className = myFuncion.FUN_CLASS.Trim();
string sMethodo = myFuncion.FUN_NOMBRE.Trim();
object myInterface = Assembly.Load(path +
sAssembly).CreateInstance(path + "." + className);
return
(List<T>)myInterface.GetType().InvokeMember(myFuncion.FUN_NOMBRE.Trim(),
System.Reflection.BindingFlags.Default |
System.Reflection.BindingFlags.InvokeMethod, null, myInterface, new object[]
{ oGeneralInfo, objecto });
}
y realizo el contrato, en la interface

[OperationContract ]
List<T> EjecutarConsulta<T>(GeneralInfo oGeneralInfo, object objecto);
el problema al compilar, y quere ver el servicio me da error

Type 'System.Collections.Generic.List`1[T]' cannot be exported as a schema
type because it is an open generic type. You can only export a generic type
if all its generic parameter types are actual types.


la veradd busque informacion, perono logtro entender, alguien me podria
ayudar a definir un metodo q generico en Wcf
Gracias
att
Napo,,,
 

Leer las respuestas

#1 Ricardo D. Masabel Avendaño
12/11/2008 - 15:56 | Informe spam
Hola Napoleón

Recuerda que WCF es un mecanismo integrado de comunicaciones y servicios que
está concebido para ser consumido no solamente por aplicaciones .NET, sino
debe ser también interoperable con otras tecnologías. Para esto, el contrato
de los servicios se define en un esquema XML (que precisamente puede ser
consumido por cualquier tecnología). En este esquema no se pueden exponer
tipos genéricos abiertos (es decir, como la lista que estás intentando
pasar, cuyo parámetro genérico es completamente desconocido). Esto se debe a
que cuando la aplicación cliente consuma el servicio no va a tener definido
claramente el tipo de dato a utilizar.

Ese es el problema con el método genérico que estás intentando exponer en tu
servicio.

Saludos.

"Napoleon" escribió en el mensaje de
noticias:
Saludos,
Espero me puedan ayudar con este temita,
Estoy creando un servico en Wcf, que contiene algunos metodos, y aqlgunos
de
ellos me reciben un <T> es decir el etodo esa diselñado de la siguienete
manera
public List<T> EjecutarConsulta<T>(GeneralInfo oGeneralInfo, object
objecto)
{
Function myFuncion = BusquedaMetodo(oGeneralInfo);
string path = myFuncion.FUN_NAMESPACE.Trim();
string className = myFuncion.FUN_CLASS.Trim();
string sMethodo = myFuncion.FUN_NOMBRE.Trim();
object myInterface = Assembly.Load(path +
sAssembly).CreateInstance(path + "." + className);
return
(List<T>)myInterface.GetType().InvokeMember(myFuncion.FUN_NOMBRE.Trim(),
System.Reflection.BindingFlags.Default |
System.Reflection.BindingFlags.InvokeMethod, null, myInterface, new
object[]
{ oGeneralInfo, objecto });
}
y realizo el contrato, en la interface

[OperationContract ]
List<T> EjecutarConsulta<T>(GeneralInfo oGeneralInfo, object
objecto);
el problema al compilar, y quere ver el servicio me da error

Type 'System.Collections.Generic.List`1[T]' cannot be exported as a schema
type because it is an open generic type. You can only export a generic
type
if all its generic parameter types are actual types.


la veradd busque informacion, perono logtro entender, alguien me podria
ayudar a definir un metodo q generico en Wcf
Gracias
att
Napo,,,

Preguntas similares