Ho due classi di dati che contengono solo membri dati (nessuna funzione). Uno è CallTask l'altro è SmsTask. Queste due classi hanno alcune proprietà comuni come ID, Tel. Metto queste proprietà comuni in una classe di interfaccia separata e io uso questa classe di interfaccia nel mio progetto ogni volta che è appropriato.
Ora ho aggiunto un WCFService al mio progetto per condividere i dati tra client e server. Si consideri il seguente design di classe:
come contrassegnare un'interfaccia come DataContract in 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; }
}
in questo disegno, voglio ospitare callTask, SmsTask, e IGsmTask ai clienti di utilizzare questi in methots servizi come il seguente;
[OperationContract]
public void AddTask(IGsmTask task)
{
}
Ho provato a segnare [DataContract] su IGsmTask ma mi dà errore complition. Non c'è qualche methot che possa usare le interfacce come DataContracts? O come dovrei usare i tipi di KnownAttributes in questo synerio?
Grazie.
interfaccia modifica alla classe – Reniuz
Grazie Reniuz sembra che non posso usare le interfacce per questo scopo. – Fer
WCF è un ** sistema basato su messaggi ** - il client invia un messaggio serializzato XML al server. In quanto tali, tali messaggi devono essere ** tipi concreti ** che possono essere serializzati in XML e rappresentati con uno schema XML. Le interfacce non possono essere serializzate in XML .... –