我在我使用的枚举中添加了一个自定义属性作为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,
}
答案 0 :(得分:2)
属性是一种语言特性,没有标准的方法在SOAP消息中表示它们。所以你正在尝试的是不可能的。相反,您可以将类型添加为属性,或者编写一个custom serialiser,它将.NET属性值移动到XML属性,但这不会是可移植的 - 它不会在另一侧补充水分没有太多工作。