Hola,
lo primero que puedo observar es que la clase Criterio no esta definida en el
Contrato.
O sea les falta los tag [DataContract] y [DataMember].
O sea algo asi:
[DataContract]
public class Criterio
{
[DataMember]
public string p1 { get; set; }
}
Podria probar con esto a ver si es lo que produce el fallo.
Igualmente podria remarcar que tambien se podria deber al uso de object como
parte del contrato, la verdad nunca utilice un object.
Property of type Object as DataMember
http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/0bdad5c7-1b16-4449-907d-a7aefc195cc1
Hasta donde se no se si es una buena practica hacer uso de object en un
servicio.
Has probado reemplazarlo al menos para probar, por ahi el object no es
serializable.
Saludos
--- El lun 4-may-09, Ignacio Ayerbe <[email protected]>
escribió:
De: Ignacio Ayerbe <[email protected]>
Asunto: [puntonet] Envio de Object en WCF
Para: [email protected]
Fecha: lunes, 4 de mayo de 2009, 10:04 am
Hola Listeros, estoy teniendo un problema cuando quiero transferir
un Object a través de WCF. La idea es que el servicio reciba un objeto bien
definido (ParamObj) y en ese objeto cargue cualquier tipo de objeto serializable
dentro (en este caso Criterio se llama). El código es muy sencillo pero me
salta un error cuando quiere deserializar el objeto “Criterio”, el
objeto es visible en el cliente y en el servidor porque está en un proyecto
común
a los 2. Les paso la definición de las clases:
MAIN
PortalService.PortalClient p = new
WpfTesting.PortalService.PortalClient();
PortalService.ParamObj param = new
WpfTesting.PortalService.ParamObj();
param._Obj = new Criterio();
p.Execute(param);
[ServiceContract]
public interface IPortal
{
[OperationContract]
void Execute(ParamObj obj);
}
public class Portal : IPortal
{
public void Execute(ParamObj obj)
{
ProcessResult pr = new ProcessResult();
pr.Execute(obj);
}
}
[DataContract]
public class ParamObj
{
[DataMember]
private object _Obj;
public ParamObj()
{
}
[DataMember]
public object Obj
{
get { return _Obj; }
set { _Obj = value; }
}
}
[KnownType(typeof(Criterio))]
public class Criterio
{
public string p1 { get; set; }
}
¿Alguien sabe por qué no puede deserializar el objeto Criterio
si esta visible en todo momento?
Saludos y Gracias!!!!
Yahoo! Cocina
Recetas prácticas y comida saludable
http://ar.mujer.yahoo.com/cocina/