我需要在项目中定义一个枚举到我的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值。而我只想了解它为什么会中断
提前致谢
答案 0 :(得分:7)
尝试在枚举值上添加EnumMember
属性。
答案 1 :(得分:7)
我的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
}
答案 2 :(得分:3)
问题是属性ColorEnum
的默认值不是枚举的有效值:当您创建MyObject
时,属性的默认值为0,0不对应对你的枚举的任何价值。
您有多种方法可以纠正此行为。
Red = 0
代替Red = 1
(甚至省略它,它会产生相同的效果)。这样,默认值将是红色而不是无意义的值。Color?
,因此null将成为合法值和属性的默认值您可以让MyObject
的构造函数为ColorEnum属性指定默认颜色。
public MyObject() { this.ColorEnum = Color.Red; }
但无论你做什么,枚举类型的默认值将始终为0.如果0不对应合法的枚举成员,则必然会出现问题。