N'a pas d'importance, aussi longtemps que c'est une classe statique. Il est tout au sujet de la convention.
Notre convention est que chaque "couche" (web, des services, des données) est un fichier unique appelé AutoMapperXConfiguration.cs
, avec une seule méthode appelée Configure()
où X
est la couche.
L' Configure()
méthode appelle alors private
méthodes pour chaque zone.
Voici un exemple de notre niveau web de la config:
public static class AutoMapperWebConfiguration
{
public static void Configure()
{
ConfigureUserMapping();
ConfigurePostMapping();
}
private static void ConfigureUserMapping()
{
Mapper.CreateMap<User,UserViewModel>();
}
// ... etc
}
Nous avons créer une méthode pour chaque "globale" (Utilisateur, Post), donc les choses sont bien séparés.
Ensuite, votre Global.asax
:
AutoMapperWebConfiguration.Configure();
AutoMapperServicesConfiguration.Configure();
AutoMapperDomainConfiguration.Configure();
// etc
C'est un peu comme une "interface de mots" - ne peut pas l'appliquer, mais vous vous y attendez, de sorte que vous pouvez de code (et refactoriser) si nécessaire.
EDIT:
Juste pensé que je devais mentionner que j'utilise désormais AutoMapper profils, de sorte que l'exemple ci-dessus devient:
public static class AutoMapperWebConfiguration
{
public static void Configure()
{
Mapper.Initialize(cfg =>
{
cfg.AddProfile(new UserProfile());
cfg.AddProfile(new PostProfile());
});
}
}
public class UserProfile : Profile
{
protected override void Configure()
{
Mapper.CreateMap<User,UserViewModel>();
}
}
Beaucoup plus propres et plus robuste.