0

我将自定义属性添加到作为 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,
}
4

1 回答 1

2

属性是一种语言特性,在 SOAP 消息中没有标准的方式来表示它们。所以你正在尝试的是不可能的。相反,您可以将类型添加为属性,或者编写一个自定义序列化程序,将 .NET 属性值移动到 XML 属性,但这不会是可移植的 - 它不会在没有太多的情况下重新水合工作的。

于 2009-12-26T13:45:27.750 回答