2009-08-18 4 views
7

WCFには、アセンブリ全体のServiceContract名前空間を設定する方法がありますか?

WCF土地では、[DataContract]を持つものの名前空間接頭辞を次のように指定できます。

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

しかし、アセンブリ全体のすべてのデータコントラクトに共通の名前空間を適用する場合は、 ContractNamespaceAttribute

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

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

素晴らしいことですが、うまく動作します。今度はServiceContract側で、サービスインターフェイスで同じ名前空間の設定を行うことができます:

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

しかし、[assembly:ContractNamespace]に匹敵する何かが、[ServiceContract] ?私は本当に多くのサービスのためにそれを手動で設定しなければならないことを避けたいと思っています。それはデータ契約のために1か所にあります。 データコントラクトのアセンブリレベルの名前空間属性があるので、サービス契約のためのものもあることを期待しています...

答えて

5

いいえ、あなたはWCFで非常に明示的でなければならず、各ServiceContractと各ServiceContractの名前空間のようなものを明示的に設定します。私はおそらく、すべてのDataContractでもそれを行うでしょう - 私がやっていることを明確にするだけです。

いいですね。明示的であれば、あなたの意図ははっきりしています。私を複雑なシステムで信頼してください。

マーク

関連する問題