so markieren Sie eine Schnittstelle als DataContract in WCF

ich habe zwei Daten-Klassen, die nur Daten von Mitgliedern(keine Funktionen). Man ist CallTask der andere ist SmsTask. Diese beiden Klassen haben einige gemeinsame Eigenschaften wie ID, Tel. Ich habe diese gemeinsamen Eigenschaften in einem separaten interface-Klasse, und ich benutze dieses interface-Klasse in meinem Projekt, wenn es angemessen ist.
Jetzt habe ich ein WCFService, um mein Projekt zum Austausch von Daten zwischen clients und server. Betrachten Sie die folgende Klasse design:

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 diesem design, ich möchte die host-CallTask, SmsTask, und IGsmTask der Kunden nutzen diesen service methots wie die folgenden;

    [OperationContract]
    public void AddTask(IGsmTask task)
    {

    }

habe ich versucht zu markieren, [DataContract] auf IGsmTask, aber es gibt mir complition Fehler. Isnt es methot, ich kann die Verwendung von Schnittstellen als DataContracts? Oder wie soll ich KnownAttributes Typen in diesem synerio?
Danke.

ändern Sie die Schnittstelle der Klasse
Dank Reniuz es scheint, dass ich nicht verwenden können Schnittstellen für diesen Zweck.
WCF ist ein message-basierte system - der client sendet eine XML-serialisierten Nachricht an den server. Als solche müssen diese Nachrichten werden Beton-Typen , können in XML serialisiert und vertreten mit einem XML-schema. Schnittstellen werden nicht in XML serialisiert ....
Gut die erste Sache, die ich tun würde, ist das erstellen der Klasse zum speichern von gemeinsamen Eigenschaften, nicht die Schnittstelle. Auf diese Weise sparen Sie mindestens 3 Zeilen in jeder abgeleiteten Klasse.

InformationsquelleAutor Fer | 2012-04-02

Schreibe einen Kommentar