creo que es un poco tarde para responder a la pregunta, pero tal vez alguien pueda usar mi respuesta.
Uso Ninject para resolver dependencias, así que he creado el Módulo Ninject para AutoMapper. Aquí está el código:
public class AutoMapperModule : NinjectModule
{
public override void Load()
{
Bind<IConfiguration>().ToMethod(context => Mapper.Configuration);
Bind<IMappingEngine>().ToMethod(context => Mapper.Engine);
SetupMappings(Kernel.Get<IConfiguration>());
Mapper.AssertConfigurationIsValid();
}
private static void SetupMappings(IConfiguration configuration)
{
IEnumerable<IViewModelMapping> mappings = typeof(IViewModelMapping).Assembly
.GetExportedTypes()
.Where(x => !x.IsAbstract &&
typeof(IViewModelMapping).IsAssignableFrom(x))
.Select(Activator.CreateInstance)
.Cast<IViewModelMapping>();
foreach (IViewModelMapping mapping in mappings)
mapping.Create(configuration);
}
}
Como se puede ver en la carga que escanea montaje para implementaion de IViewModelMapping y luego corre Crear método.
Aquí está el código de IViewModelMapping:
interface IViewModelMapping
{
void Create(IConfiguration configuration);
}
implementación típica de IViewModelMapping se ve así:
public class RestaurantMap : IViewModelMapping
{
public void Create(IConfiguration configuration)
{
if (configuration == null)
throw new ArgumentNullException("configuration");
IMappingExpression<RestaurantViewModel, Restaurant> map =
configuration.CreateMap<RestaurantViewModel, Restaurant>();
// some code to set up proper mapping
map.ForMember(x => x.Categories, o => o.Ignore());
}
}
Ugh, soy un idiota. Me refería a AutoMapper. Demasiada medicina para la tos. Actualizado mi pregunta. –