2013-08-21 10 views
5

Ich verwende derzeit einen veralteten WCF-Dienst, der nicht den Benennungsstandards der in Entwicklung befindlichen App entspricht. Nun, wenn gegen einen REST-Service zu entwickeln, wo ich die Modelle auf meine eigene Gruppe gründen ist es wirklich einfach eine Eigenschaft umbenennen wie so:Benennen Sie Eigenschaftsnamen aus dem vom WCF-Dienst generierten Modell

[DataContract] 
public class SomeModel 
{ 
    [DataMember(Name = "id")] 
    public string Id { get; set; } 

    // ... 
} 

Aber mit dem WCF-Dienst generiert er das Modell, und ich will nicht, um eine generierte Datei zu bearbeiten, da alle meine Änderungen verloren gehen würden, wenn jemand/-die Code-Generierung erneut auslöst. Wie kann ich das gleiche Ziel erreichen, wenn ich einen WCF-Service in Anspruch nehme?

+0

Der Code wird nicht automatisch in Visual Studio generiert und über [svcutil.exe] (http://msdn.microsoft.com/en-us/library/ms733133.aspx) ausgeführt und die .cs-Datei wird hinzugefügt erstellt (nachdem Sie es zwicken) akzeptabel sein? –

+0

@ScottChamberlain danke Ich werde es überprüfen. Ich bin ziemlich neu in dem Thema WCF, also dachte ich, dass es eine wirklich triviale Lösung für mein Problem geben könnte. – Mark

Antwort

3
How about adapter pattern? 

würde dies ermöglicht es Ihnen, mit Ihrer Klasse Objekt myClass in Ihrer Anwendung zu spielen, während, wenn sie an den Dienst übergeben wird, um Sie exposedClaSs haben können, die automatisch generiert wird.

0

Meiner Meinung nach ist die Verwendung des Proxy-Generators eine totale Zeitverschwendung: Sie möchten Ihre Klassen manuell verwalten und etwas anderes mit den zugrundeliegenden Implementierungsdetails so behandeln, dass sie Sie nicht beeinflussen und widerstandsfähig sind wechseln. Die Art und Weise, wie wir dies bei unserem aktuellen Projekt tun, besteht darin, den Castle Dynamic Proxy zu verwenden, um die Anrufe an die Kanalfabrik zu senden.

Wir haben so etwas getan http://www.planetgeek.ch/2010/10/13/dynamic-proxy-for-wcf-with-castle-dynamicproxy/ und haben gefunden, dass es sehr gut funktioniert.

2

Wenn Sie sich den generierten Code ansehen, werden Sie sehen, dass die DataContract-Klassen partiell sind.

Sie könnten dem Projekt eine Datei mit derselben partiellen Klassendefinition hinzufügen und Wrappereigenschaften mit dem korrekten Namen erstellen.

Verwandte Themen