【问题标题】:In WCF is there a way to set ServiceContract Namespace assembly-wide?在 WCF 中有没有办法在程序集范围内设置 ServiceContract 命名空间?
【发布时间】:2009-08-18 19:45:44
【问题描述】:

在 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] 设置命名空间?我真的很想避免为许多服务手动设置它,很高兴将它放在数据合同的一个地方。 由于数据合同有一个程序集级命名空间属性,我希望服务合同也有一个...

【问题讨论】:

    标签: .net wcf web-services


    【解决方案1】:

    不,您不能 - 您必须在 WCF 中非常明确,并且您必须在每个 ServiceContract 上明确设置命名空间等内容。我什至可能会在每个 DataContract 上都这样做——只是为了清楚我在做什么。

    不过,这是件好事!直截了当也会让你的意图变得清晰——相信我,在一个复杂的系统中,这会有所帮助!

    马克

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-16
      • 1970-01-01
      相关资源
      最近更新 更多