我打算使用 AutoMapper 的 IObjectMapper 接口(interface)为类型创建我自己的自定义对象映射器,但我看不到任何可以向 AutoMapper 注册实现的映射器的地方。谁能告诉我怎么注册。

编辑:有关这方面的更多信息,请关注 AutoMapper-Users 组中的 discussion

最佳答案

一种方法是替换 MapperRegistry 类中的静态注册表函数。这是当前版本:

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()
};

您基本上会复制那个,然后执行以下操作:
MapperRegistry.AllMappers = () => new IObjectMapper[] {
   // Insert your custom mapper somewhere in this list
};

只需在执行任何 Mapper.CreateMap 或 Mapper.Initialize 业务之前执行此操作。映射器按顺序进行评估。

关于c# - 如何使用 AutoMapper 注册自定义 ObjectMapper,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2449142/

10-15 17:49