2009-08-18 25 views
7

En WCF tierra, se puede especificar un prefijo de espacio para todo lo que tiene una [DataContract] así:En WCF, ¿hay alguna forma de establecer el espacio de nombres de ServiceContract en todo el ensamblado?

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

Sin embargo si desea aplicar un espacio de nombres comunes a todos los contratos de datos asamblea de toda, puede utilizar la ContractNamespaceAttribute:

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

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

Eso es grande, funciona bien. Ahora del lado ServiceContract, puedo hacer la misma configuración de espacio de nombres en la interfaz de servicio:

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

Pero, ¿existe algo comparable a [assembly: ContractNamespace] que puede ser utilizado para ajustar el espacio de nombres para todos [ServiceContract] s? Realmente me gustaría evitar tener que configurarlo manualmente para tantos servicios, es bueno tenerlo en 1 lugar para los contratos de datos. Dado que hay un atributo de espacio de nombres de nivel de ensamblaje para los contratos de datos, espero que haya uno para los contratos de servicio ...

Respuesta

5

No, no se puede - tiene que ser muy explícito en WCF y debe establecer explícitamente cosas como espacios de nombres en cada uno de los ServiceContract. Probablemente incluso lo haría en todos y cada uno de los DataContract, solo para tener claro lo que estoy haciendo.

¡Es algo bueno, sin embargo! Ser explícito también aclara tus intenciones, créeme, en un sistema complejo, ¡eso ayuda!

Marc

Cuestiones relacionadas