2010-03-15 13 views
2

Je prévois de créer mon propre Object Mapper personnalisé pour un type en utilisant l'interface IObjectMapper d'AutoMapper, mais je ne vois aucun endroit où enregistrer le mappeur implémenté avec AutoMapper. Quelqu'un pourrait-il me dire comment l'enregistrer.Comment enregistrer un ObjectMapper personnalisé avec AutoMapper

Edit: Pour plus d'informations sur ce s'il vous plaît suivre le discussion au groupe AutoMapper-utilisateurs

Répondre

2

Une façon d'aller ici est de remplacer la fonction d'enregistrement statique dans la classe MapperRegistry. Voici la version actuelle:

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

Vous souhaitez copier fondamentalement celui-là, et faire quelque chose comme:

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

Il suffit de faire ce que vous faites avant toute entreprise Mapper.CreateMap ou Mapper.Initialize. Les mappeurs sont évalués dans l'ordre.