How to register a custom ObjectMapper with AutoMapper

巧了我就是萌 提交于 2019-12-07 21:37:03

问题


I am planning to create my own custom Object Mapper for a type using AutoMapper's IObjectMapper interface, but I don't see any place where we can register the implemented mapper with AutoMapper. Could anyone tell me how to register it.

Edit: For more information on this please follow the discussion at AutoMapper-Users group


回答1:


One way to go here is to replace the static registry function in the MapperRegistry class. Here's the current version:

public static Func<IEnumerable<IObjectMapper>> AllMappers = () => new IObjectMapper[]
{
#if !SILVERLIGHT
    new DataReaderMapper(),
#endif
    new TypeMapMapper(TypeMapObjectMapperRegistry.AllMappers()),
    new StringMapper(),
    new FlagsEnumMapper(),
    new EnumMapper(),
    new ArrayMapper(),
    new EnumerableToDictionaryMapper(),
    new DictionaryMapper(),
#if !SILVERLIGHT
    new ListSourceMapper(),
#endif
    new EnumerableMapper(),
    new AssignableMapper(),
    new TypeConverterMapper(),
    new NullableMapper()
};

You'd basically copy that one, and do something like:

MapperRegistry.AllMappers = () => new IObjectMapper[] {
   // Insert your custom mapper somewhere in this list
};

Just do that before you do any Mapper.CreateMap or Mapper.Initialize business. Mappers are evaluated in order.



来源:https://stackoverflow.com/questions/2449142/how-to-register-a-custom-objectmapper-with-automapper

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!