为什么AutoMapper有一个看似更强大的ValueResolver时会有一个IValueFormatter?

dev*_*xer 15 c# mapping automapper

它看起来像是一个IValueFormatter类型的值object并返回一个类型的值string,而a ValueResolver<TSource, TDestination>取任何类型的值并返回任何类型的值.所以,它更灵活.还有一个问题是,使用a ValueResolver,您永远不需要将源转换为特定类型 - 您可以在类定义中明确定义它.

鉴于此,为何使用IValueFormatter?它做了什么不能做的事情ValueResolver吗?我误解了它是如何工作的吗?

Jim*_*ard 13

最大的区别是格式化程序可以应用于成员,配置文件,类型和全局级别.因此,您可以在配置文件中执行类似"ForSourceType.AddFormatter()"的操作,现在就是blammo!所有小数现在都显示为money.解析器严格用于自定义成员映射.