【问题标题】:Ensure that the necessary enum values are present and are marked with EnumMemberAttribute attribute确保存在必要的枚举值并使用 EnumMemberAttribute 属性进行标记
【发布时间】:2015-05-28 22:43:53
【问题描述】:

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

尝试序列化参数http://tempuri.org/:objects 时出错。 InnerException 消息是“枚举” 值“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
    }

【问题讨论】:

  • 制作枚举 LPFLogger : int 没有帮助。

标签: c# wcf


【解决方案1】:

请查找以下代码以检查枚举是否已在您的服务器端退出

 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;
    }

【讨论】:

    猜你喜欢
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 2012-04-19
    相关资源
    最近更新 更多