[英]Passing enums via WCF service
我需要在项目中定义一个枚举到我的WCF服务项目的枚举。 我正在创建一个包含枚举和其他数据的对象。 当我通过WCF服务将对象传递给客户端时,我找不到。
枚举:
public enum Color
{
Red = 1,
Blue,
Green,
}
要传递的对象:
public class MyObject
{
public Color ColorEnum { get; set; }
public string Name{ get; set; }
}
只有当我给对象一个默认值,即ColourEnum = Color.Red时,服务才有效。 如果它没有设置它休息。 我知道这是一个解决方法,但我正在寻找一个更有意义的解决方案,而不是设置一个arb值。 而我只是想明白为什么它会破裂
提前致谢
尝试在枚举值上添加EnumMember
属性。
我在我的WCF项目中有一个枚举,如下所示:
[DataContract]
public class CarBookReq
{
[DataMember]
public string RefNo { get; set; }
[DataMember]
public RateType MyProperty { get; set; }
}
[DataContract]
public enum RateType
{
[EnumMember]
silver,
[EnumMember]
gold,
[EnumMember]
platinum,
[EnumMember]
young,
[EnumMember]
youngplus
}
问题是属性的默认值ColorEnum
不是枚举的有效值:当您创建MyObject
,属性的默认值为0,而0与枚举的任何值都不对应。
您有多个选项可以更正此行为。
Red = 0
而不是Red = 1
(甚至可以省略它,它会产生相同的效果)。 这样,默认值将是红色而不是无意义的值。 Color?
,因此null将成为合法值和属性的默认值 您可以让MyObject
的构造函数为ColorEnum属性指定默认颜色。
public MyObject(){this.ColorEnum = Color.Red; }
但无论你做什么,枚举类型的默认值将始终为0.如果0不对应于合法的枚举成员,则必然会出现问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.