2013-08-21 10 views
5

Attualmente sto consumando un servizio WCF legacy che non è conforme agli standard di denominazione dall'app in fase di sviluppo. Ora, quando si sviluppa contro un servizio REST, dove creo i modelli da solo è davvero facile per rinominare una proprietà in questo modo:Rinominare i nomi delle proprietà dal modello generato dal servizio WCF

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

    // ... 
} 

Ma con il servizio WCF genera il modello, e non voglio per modificare un file generato in quanto tutte le mie modifiche andrebbero perse quando qualcuno/-thing innesca nuovamente la generazione del codice. Quindi, come posso raggiungere lo stesso obiettivo quando utilizzo un servizio WCF?

+0

Non genera automaticamente il codice in Visual Studio e lo fa tramite [svcutil.exe] (http://msdn.microsoft.com/en-us/library/ms733133.aspx) e aggiungendo il file .cs crea (dopo averlo modificato) essere accettabile? –

+0

@ScottChamberlain, grazie, controllerò. Sono abbastanza nuovo per l'argomento WCF, quindi ho pensato che potesse esserci una soluzione davvero banale al mio problema. – Mark

risposta

3
How about adapter pattern? 

questo permetterebbe di giocare con i vostri myClass oggetto classe nell'applicazione, mentre quando viene passato al servizio è possibile avere exposedClaSs che viene generato automaticamente.

0

A mio parere l'utilizzo del generatore di proxy è una perdita di tempo totale: ciò che si vuole fare è gestire le classi manualmente e lasciare che qualcos'altro gestisca i dettagli di implementazione sottostanti in un modo che non abbia impatto ed è resiliente cambiare. Il modo in cui lo facciamo sul nostro attuale progetto è utilizzare il proxy dinamico del castello per inviare le chiamate alla fabbrica del canale.

Abbiamo fatto qualcosa come questo http://www.planetgeek.ch/2010/10/13/dynamic-proxy-for-wcf-with-castle-dynamicproxy/ e abbiamo trovato che funziona molto bene.

2

Se si guarda il codice generato, si vedrà che le classi DataContract sono parziali.

È possibile aggiungere un file al progetto con la stessa definizione di classe parziale e creare le proprietà wrapper con il nome corretto.

Problemi correlati