它看起来像一个 IValueFormatter
采用 object
类型的值并返回 string
类型的值, 而一个 ValueResolver<TSource, TDestination>
接受任何类型的值并返回任何类型的值。所以,它更灵活。还有一个问题是,使用 ValueResolver
,您永远不需要将源转换为特定类型——您可以在类定义中明确定义它。
鉴于此,为什么要使用 IValueFormatter
?它能做 ValueResolver
做不到的事情吗? ?我是否误解了它的工作原理?
最佳答案
最大的区别是格式化程序可以应用于成员、配置文件、类型和全局级别。因此,您可以在配置文件中执行类似“ForSourceType.AddFormatter()”之类的操作,现在该死了!您所有的小数现在都显示为金钱。解析器严格用于自定义成员映射。
关于c# - 为什么 AutoMapper 有一个 IValueFormatter,而它有一个看似更强大的 ValueResolver?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2170485/