自定义属性与服务引用代理

时间:2009-12-26 13:39:00

标签: .net wcf attributes proxy-classes service-reference

我在我使用的枚举中添加了一个自定义属性作为Web服务的一部分。当我将Web服务作为服务引用添加到win表单应用程序时,自定义属性不会出现在服务引用代理对象中,尽管枚举类型本身确实出现。我看了一遍,没有找到任何接近解决方案的东西。

我是否尝试做一些不可能的事情?

服务器端代码:

public enum ServiceEnum
{
    [ServiceEnumTest("Boat")]item1,
    [ServiceEnumTest("Plane")]item2,
    [ServiceEnumTest("Bicycle")]item3,
    [ServiceEnumTest("Car")]item4,
    item5
}

客户端代理生成的代码:

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0")]
[System.Runtime.Serialization.DataContractAttribute(Name="ServiceEnum", Namespace="http://tempuri.org/")]
public enum ServiceEnum : int {

    [System.Runtime.Serialization.EnumMemberAttribute()]
    item1 = 0,

    [System.Runtime.Serialization.EnumMemberAttribute()]
    item2 = 1,

    [System.Runtime.Serialization.EnumMemberAttribute()]
    item3 = 2,

    [System.Runtime.Serialization.EnumMemberAttribute()]
    item4 = 3,

    [System.Runtime.Serialization.EnumMemberAttribute()]
    item5 = 4,
}

1 个答案:

答案 0 :(得分:2)

属性是一种语言特性,没有标准的方法在SOAP消息中表示它们。所以你正在尝试的是不可能的。相反,您可以将类型添加为属性,或者编写一个custom serialiser,它将.NET属性值移动到XML属性,但这不会是可移植的 - 它不会在另一侧补充水分没有太多工作。