繁体   English   中英

通过WCF服务传递枚举

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM