comment marquer un interface comme DataContract dans WCF

j'ai deux classes de données qui ne détiennent que des données membres(pas de fonction). On est CallTask l'autre est SmsTask. Ces deux catégories ont en commun certaines propriétés comme la ID, Tél. J'ai mis ces propriétés en commun dans une salle de classe d'interface et j'utilise cette interface de la classe dans mon projet, le cas échéant.
Maintenant, j'ai ajouté un WCFService à mon projet pour partager des données entre les clients et le serveur. Considérons la classe suivante de conception:

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; }
}

dans cette conception, je veux hôte CallTask, SmsTask, et IGsmTask aux clients de les utiliser dans le service de methots comme suit;

    [OperationContract]
    public void AddTask(IGsmTask task)
    {

    }

j'ai essayé de marquer [DataContract] sur IGsmTask, mais il me donne complition erreur. N'est-il methot que je peux utiliser des interfaces comme DataContracts? Ou comment dois-je utiliser KnownAttributes types dans ce synerio?
Merci.

l'interface de changement de classe
Grâce Reniuz il semble que je ne peux pas utiliser les interfaces pour ce but.
WCF est une message système - le client envoie un XML sérialisé message au serveur. En tant que tels, ces messages doivent être type peut être sérialisé en XML et représentée par un schéma XML. Les Interfaces ne peuvent pas être sérialisé en XML ....
Eh bien la première chose que je voudrais faire est de créer une classe pour stocker des propriétés communes, pas d'interface. De cette façon, vous économisez au moins 3 lignes dans chaque classe dérivée.

OriginalL'auteur Fer | 2012-04-02