代码之家  ›  专栏  ›  技术社区  ›  CodingWithSpike

在WCF中,有没有一种方法可以在程序集范围内设置ServiceContract命名空间?

  •  7
  • CodingWithSpike  · 技术社区  · 16 年前

    在WCF land中,您可以为具有[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 回复  |  直到 16 年前
        1
  •  5
  •   marc_s MisterSmith    16 年前

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