Egal, solange es sich um eine statische Klasse handelt. Es geht nur um Konventionen .
Unsere Konvention ist, dass jede "Schicht" (Web, Dienste, Daten) eine einzelne Datei hat, die aufgerufen wird AutoMapperXConfiguration.cs, mit einer einzigen Methode, die aufgerufen wird Configure(), wobei Xsich die Schicht befindet.
Die Configure()Methode ruft dann privateMethoden für jeden Bereich auf.
Hier ist ein Beispiel für unsere Web-Tier-Konfiguration:
public static class AutoMapperWebConfiguration
{
public static void Configure()
{
ConfigureUserMapping();
ConfigurePostMapping();
}
private static void ConfigureUserMapping()
{
Mapper.CreateMap<User,UserViewModel>();
}
// ... etc
}
Wir erstellen eine Methode für jedes "Aggregat" (Benutzer, Beitrag), damit die Dinge gut getrennt sind.
Dann ist dein Global.asax:
AutoMapperWebConfiguration.Configure();
AutoMapperServicesConfiguration.Configure();
AutoMapperDomainConfiguration.Configure();
// etc
Es ist wie eine "Schnittstelle von Wörtern" - kann es nicht erzwingen, aber Sie erwarten es, sodass Sie bei Bedarf Code (und Refactor) erstellen können.
BEARBEITEN:
Ich dachte nur, ich würde erwähnen, dass ich jetzt AutoMapper- Profile verwende . Das obige Beispiel lautet also:
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>();
}
}
Viel sauberer / robuster.