tengo dos clases de datos que contienen solo miembros de datos (sin funciones). Uno es CallTask y el otro es SmsTask. Estas dos clases tienen algunas propiedades comunes como ID, Tel. Puse estas propiedades comunes en una clase de interfaz separada y utilizo esta clase de interfaz en mi proyecto cuando corresponde.
Ahora agregué un WCFService a mi proyecto para compartir datos entre los clientes y el servidor. Considere el siguiente diseño de la clase:
cómo marcar una interfaz como DataContract en WCF
public interface IGsmTask : IComparable
{
string TaskID { get; set; }
string SessionID { get; set; }
string Tel { get; set; }
}
class CallTask : IGsmTask
{
#region IGsmTask Members
public string TaskID { get; set; }
public string SessionID { get; set; }
public string Tel { get; set; }
#endregion
}
class SmsTask : IGsmTask
{
#region IGsmTask Members
public string TaskID { get; set; }
public string SessionID { get; set; }
public string Tel { get; set; }
#endregion
public string SmsText { get; set; }
}
en este diseño, quiero acoger callTask, SmsTask y IGsmTask a los clientes a utilizar estos en methots de servicios como los siguientes;
[OperationContract]
public void AddTask(IGsmTask task)
{
}
traté de marcar [DataContract] en IGsmTask pero me da error complition. ¿No hay alguna methot que pueda usar interfaces como DataContracts? ¿O cómo debería usar los tipos KnownAttributes en este synerio?
Gracias.
cambio en la interfaz de la clase – Reniuz
Gracias Reniuz parece que no puedo utilizar las interfaces para este propósito. – Fer
WCF es un sistema ** basado en mensajes: el cliente envía un mensaje serializado XML al servidor. Como tales, esos mensajes deben ser ** tipos concretos ** que se pueden serializar en XML y representar con un esquema XML. Las interfaces no se pueden serializar en XML ... –