确保存在必要的枚举值,并使用EnumMemberAttribute属性

时间:2015-05-28 11:00:25

标签: c# wcf

当我通过WCF将此DTO发送到我的服务器端时,我收到此错误:

  

尝试序列化参数http://tempuri.org/:objects时出错。 InnerException消息是'Enum   值'3'对于类型'LPFLogger'无效,无法序列化。   确保存在必要的枚举值并标记   如果类型具有DataContractAttribute,则为EnumMemberAttribute属性   属性。'。有关详细信息,请参阅InnerException。

我的DTO没有DataContract属性我根本不使用它们。默认情况下不需要它。

为什么价值3成问题?因为我的枚举只有0,1,2?

public class MyObjectDTO
    {
        public int Id { get; set; }  
        public int Size { get; set; }
        public LPFProcessor Processor { get; set; }
        public LPFAccess Access { get; set; }
        public LPFLogger Logger { get; set; }
    }

public enum LPFLogger
    {
        None = 0,
        EventLogger,
        TempLogger
    }

1 个答案:

答案 0 :(得分:0)

请查看下面的代码,以检查枚举是否已经退出服务器端

 private static LPFLogger GetLPFLogger(int value)
    {

        var lstEnum = Enum.GetValues(typeof(LPFLogger)).Cast<int>().ToList();

        if (lstEnum.Any(s => s == value))
            return (LPFLogger)value;

        return LPFLogger.None;
    }