我遇到一个问题,就是自动调用格式化程序被调用两次,并在第一次运行时使用它解析为的值作为第二次运行时的源并导致错误的结果。
我的automapper配置文件包含以下全局字符串格式化程序
Mapper.ForSourceType<string>().AddFormatter<StandardStringFormatter>();
我有另一个特定字符串属性的格式化程序。 DhcpEnabledFlagFormatter将一个字符代码转换为有意义的字符串。
Mapper.CreateMap<NetInterface, NetInterfaceList>()
.ForMember(x => x.DhcpEnabledFlag,
o => o.AddFormatter<DhcpEnabledFlagFormatter>());
DhcpEnabledFlagFormatter被调用两次。在第二遍中,它使用它解析的有意义字符串作为源值,然后始终返回“None”,这是Formatter的默认响应。
如果我从我的automapper配置文件中删除全局StandardStringFormatter,则问题就会消失,DhcpEnabledFlagFormatter只会被调用一次。
我知道我可以通过将DhcpEnabledFlagFormatter转换为自定义解析器来解决问题,但我很好奇是否有其他选项或者这是一个已知错误。