1

我有一个问题,自动映射器格式化程序被调用两次,并在第二次运行时使用它在第一次运行时解析为的值作为源并导致错误结果。

我的自动映射器配置文件包含以下全局字符串格式化程序

Mapper.ForSourceType<string>().AddFormatter<StandardStringFormatter>();

我有另一个用于特定字符串属性的格式化程序。DhcpEnabledFlagFormatter 将单字符代码转换为有意义的字符串。

Mapper.CreateMap<NetInterface, NetInterfaceList>()
      .ForMember(x => x.DhcpEnabledFlag,
       o => o.AddFormatter<DhcpEnabledFlagFormatter>());

DhcpEnabledFlagFormatter 被调用两次。在第二遍中,它使用解析为的有意义的字符串作为源值,然后始终返回“无”,这是格式化程序的默认响应。

如果我从我的自动映射器配置文件中删除全局 StandardStringFormatter,问题就会消失,并且 DhcpEnabledFlagFormatter 只被调用一次。

我知道我可以通过将 DhcpEnabledFlagFormatter 转换为自定义解析器来解决问题,但我很好奇是否还有其他选项或者这是一个已知的错误。

4

0 回答 0