【问题标题】:Using ContractNamespace for namespacing enums in WCF在 WCF 中使用 ContractNamespace 命名空间枚举
【发布时间】:2014-10-25 18:52:17
【问题描述】:

我正在努力使用ContractNamespace 为我的 C# 枚举生成正确的 WSDL 命名空间,而不是使用属性来装饰每种类型。

以下代码在“http://www.mynamespace.co.za/”中正确生成了Person 类型,但由于某种原因,Gender 位于不同的 WSDL 命名空间“http://schemas.datacontract.org/2004/07/SomeOtherNamespace”中。

我错过了什么?枚举需要特殊处理吗?

[assembly: ContractNamespace("http://www.mynamespace.co.za/", ClrNamespace = "SomeOtherNamespace")]

namespace SomeOtherNamespace
{
    public class Person
    {
        public int Age { get; set; }
        public Gender Gender { get; set; }
    }

    public enum Gender
    { 
        Male,
        Female,
        Other
    }
}

在我的实际代码中,类型存在于外部生成的程序集中。这些类型不能轻易地用自定义属性修饰。 ContractNamespace 如果它也可以用于枚举,那将是完美的......

换句话说,以下工作,但进入代码生成过程会非常痛苦。

[DataContract(Namespace = "http://www.mynamespace.co.za/")]
public enum Gender
{ 
    [EnumMember]
    Male,
    [EnumMember]
    Female,
    [EnumMember]
    Other
}

【问题讨论】:

    标签: c# wcf namespaces wsdl


    【解决方案1】:

    枚举是一种痛苦。您必须修饰枚举以使ContractNamespace 属性生效。

    [DataContract]
    public enum Gender
    { 
        [EnumMember]
        Male,
        [EnumMember]
        Female,
        [EnumMember]
        Other
    }
    

    应该看到你的类型出现在你想要的 WSDL 命名空间中。

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 谢谢,我会试试 IWsdlExportExtension
      猜你喜欢
      • 2011-10-28
      • 2012-10-18
      • 2012-09-08
      • 1970-01-01
      • 2011-09-12
      • 1970-01-01
      • 2016-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多