【发布时间】: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