【问题标题】:Map enum to enum with automapper使用 automapper 将枚举映射到枚举
【发布时间】:2018-07-10 13:50:31
【问题描述】:

我有两个枚举:一个是仅后端的,第二个是版本化的并公开给 API 使用者。

后端版本:

   public enum SomeEnum  
   {
          One,
          Two,
          Three
   }

API 公开版本

   public enum SomeEnum 
   {
          One,
          Two
   }

我正在使用 Automapper 5.2.0 将后端枚举映射到 api 枚举,如下所示:

     CreateMap<SomeEnum, CommonEnums.SomeEnum>()

我现在需要忽略 SomeEnum.Three。所以我改变了代码:

    CreateMap<SomeEnum, CommonEnums.SomeEnum>()
          .ForMember(t => t == CommonEnums.SomeEnum.Three, p => p.Ignore());

现在我有错误:

AutoMapper.AutoMapperConfigurationException : 自定义配置 members 仅支持类型上的顶级个人成员。

为什么?我该如何解决?

【问题讨论】:

  • 你想通过这样的映射达到什么目的?
  • @un-lucky - 同样的错误,不是同一个问题
  • @AlexRiabov 我们正在使用 WCF 与客户端进行通信。如果我将新的枚举成员添加到已发布的 API 中,所有这些客户端都将无法使用更新 API。所以我们使用版本,在新版本中我添加了我想在最新版本中使用的 SomeEnum.Three。但是旧版本不应该知道它,因为它会导致客户端崩溃
  • @AntonShakalo 但你不能忽略枚举值,你只能使用另一个值(或可为空的类型)
  • @AlexRiabov 好吧,我有问题

标签: c# enums automapper-5


【解决方案1】:

所以基本上你可以简单地忽略新值和映射就可以了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-14
    • 2019-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多