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 X
sich die Schicht befindet.
Die Configure()
Methode ruft dann private
Methoden 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.