在设计我的服务时,我决定要自定义生成的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。
答案 0 :(得分:4)
如果我没有弄错,如果省略ClrNamespace
,那么合约命名空间设置将应用于全局命名空间中的对象。