通过WCF服务传递枚举

我需要在项目中将Enum定义为我的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才能使服务正常工作。 如果它没有设置它rest。 我知道这是一种解决方法,但我正在寻找一个更有意义的解决方案,而不是设置一个arb值。 而我只是想明白为什么它会破裂

提前致谢

我在我的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 } 

尝试在枚举值上添加EnumMember属性。

问题是属性的默认值ColorEnum不是枚举的有效值:当您创建MyObject ,属性的默认值为0,而0与枚举的任何值都不对应。

您有多个选项可以更正此行为。

  • 你的枚举声明中可以有Red = 0而不是Red = 1 (甚至可以省略它,它会产生相同的效果)。 这样,默认值将是红色而不是无意义的值。
  • 您可以在枚举中添加默认值Default = 0,您知道它将具有“未定义颜色”的含义。
  • 你可以让你的属性成为可以为空的Color? ,因此null将成为合法值和属性的默认值
  • 您可以让MyObject的构造函数为ColorEnum属性指定默认颜色。

    public MyObject(){this.ColorEnum = Color.Red; }

但无论你做什么,枚举类型的默认值将始终为0.如果0不对应合法的枚举成员,则必然会出现问题。