2009-07-01 13 views
3

Ich habe das Problem, dass ein WCF-Dienst (generiert mit SVCUTIL.EXE) seine eigenen Datentypen generiert, anstatt die bereits definierten zu verwenden.WCF Service Client mit SVCutil (keine "extra" clientside-Datentyp def.)

zum Beispiel:

die svcutil erzeugen so etwas wie diese:

public partial class EmailTransactionRequestMsg : object, System.Runtime.Serialization.IExtensibleDataObject 
{ 

    private System.Runtime.Serialization.ExtensionDataObject extensionDataField; 

    private int bit_to_setField; 

    private string country_db_identifierField; 
. 

. 
} 

wenn ich will es eigentlich die Klasse verwenden ist bereits vorhanden:

[DataContract(Namespace = "Ps.App.Mailing.MsgQueue.MsgInterfaces")] 
public class EmailTransactionRequestMsg 
{ 
    [DataMember] 
    public string country_db_identifier; 

    [DataMember] 
    public int bit_to_set; 

} 

ich sehe, dass der svcutil Dienst ein neues Extension-Feld erzeugt (was ich zu welchem ​​Zweck nicht weiß dies erforderlich ist)

So, wie bekomme ich svcutil meine eigene Klasse zu verwenden (weil ich don‘ t wollen die Objekte nach jedem einzelnen Feld umwandeln)

Vielen Dank!

Antwort

4

Bitte nehmen Sie sich ein lookat die folgende svcutil Referenz:

http://msdn.microsoft.com/en-us/library/aa347733.aspx

insbesondere die/Referenz: Schalter, der genau sein sollte, was Sie suchen.

ich sehe, dass der svcutil Service ein neues Extension-Feld erzeugt (was ich weiß nicht, wozu diese erforderlich ist)

Dies erzeugt wird für Dich mit Daten helfen Vertragsversionierung Wenn Sie zu einem späteren Zeitpunkt eine neue Eigenschaft zu EmailTransactionRequestMsg hinzufügen, aber einen Client verwenden, der eine ältere Assembly verwendet, ohne dass diese Eigenschaft definiert ist, kann der neue Dienst weiterhin verwendet werden, und ExtensionDataObject enthält unbekannte (neue) Eigenschaften. MSDN sollten Sie mit mehr Details wieder sprovide: http://msdn.microsoft.com/en-us/library/system.runtime.serialization.extensiondataobject.aspx

+0

Hallo, Dank, dass mein erster Versuch war auch, aber wenn ich Referenz:/Referenz: gibt es noch eine neue Klasse in dem Client generierte . Auch wenn ich die Klasse von IExtensibleDataObject abgeleitet .. – David

+0

Oh, ich sehe, dass der Client nicht einmal generiert wird, wenn ich die Referenz hinzufügen .. – David

+0

Bitte fügen Sie den SVCUTIL-Aufruf zu Ihrem Beitrag. Auch von der Spitze meines Kopfes, wenn Sie Datenverträge wiederverwenden möchten, legen Sie sie alle in separate Assembly und verweisen Sie auf diese in SVC-Util. –

Verwandte Themen