2009-08-18 12 views
7

In paese WCF, è possibile specificare un prefisso dello spazio dei nomi per tutto ciò che ha un [DataContract] in questo modo:In WCF esiste un modo per impostare lo spazio dei nomi di ServiceContract in tutto l'assembly?

[DataContract(Namespace="MyApp")] public class whatever... 

Tuttavia, se si voleva applicare uno spazio dei nomi comune a tutti i contratti di dati di montaggio a livello, è possibile utilizzare il ContractNamespaceAttribute:

/* in AssemblyInfo.cs */ 
[assembly: ContractNamespace("MyApp", ClrNamespace = "MyApp")] 

/* in whatever.cs */ 
[DataContract] public class whatever... 

Questo è ottimo, funziona bene. Ora sopra sul lato ServiceContract, posso fare la stessa messa Namespace sull'interfaccia di servizio:

[ServiceContract(Namespace="MyApp")] public interface whateverService... 

ma c'è qualcosa di paragonabile a [assembly: ContractNamespace] che può essere utilizzato per impostare lo spazio dei nomi per tutti [ServiceContract] S? Mi piacerebbe davvero evitare di doverlo impostare manualmente per molti servizi, è bello averlo in 1 posto per i contratti dati. Dato che esiste un attributo dello spazio dei nomi di livello assembly per i contratti di dati, mi auguro che ce ne sia uno anche per i contratti di servizio ...

risposta

5

No, non è possibile - devi essere molto esplicito in WCF e devi imposta in modo esplicito elementi come spazi dei nomi in ogni ServiceContract. Probabilmente lo farei anche su ogni DataContract - solo per essere chiari su quello che sto facendo.

È una buona cosa, però! Essere espliciti rende anche chiare le tue intenzioni - fidati di me, in un sistema complesso, che aiuta!

Marc

Problemi correlati