使用ContractNamespace属性设置WCF DataContract命名空间

时间:2010-08-04 18:14:14

标签: .net wcf

在设计我的服务时,我决定要自定义生成的WSDL中出现的命名空间。

对于DataContracts,我遇到了ContractNamespace属性,这似乎是为每个DataContract显式设置相同名称空间的一个很好的快捷方式。我最初的尝试看起来像这样:

[assembly:ContractNamespace("http://types.mycompany.com/2010/08/03")]
namespace MyCompany.MyContracts
{
    [DataContract]
    //...multiple datacontract classes here
}

令我惊讶的是,这不起作用。经过多次修改之后,我最终成功了,当我最终将属性的 ClrNamespace 属性设置为等于我的CLR命名空间(示例中为MyCompany.MyContracts)时。像这样的东西

[assembly:ContractNamespace("http://types.mycompany.com/2010/08/03",
          ClrNamespace="MyCompany.MyContracts")]

我的问题是:为什么这不是第一种方式?我的期望是,通过不指定CLR namepsace,此属性将影响程序集范围内的所有datacontracts。

1 个答案:

答案 0 :(得分:4)

如果我没有弄错,如果省略ClrNamespace,那么合约命名空间设置将应用于全局命名空间中的对象。