Nie ma znaczenia, o ile jest to klasa statyczna. Chodzi o konwencję .
Naszą konwencją jest to, że każda „warstwa” (sieć, usługi, dane) ma jeden plik o nazwie AutoMapperXConfiguration.cs
, z jedną metodą o nazwie Configure()
, gdzie X
jest warstwa.
Następnie Configure()
metoda wywołuje private
metody dla każdego obszaru.
Oto przykład naszej konfiguracji warstwy internetowej:
public static class AutoMapperWebConfiguration
{
public static void Configure()
{
ConfigureUserMapping();
ConfigurePostMapping();
}
private static void ConfigureUserMapping()
{
Mapper.CreateMap<User,UserViewModel>();
}
// ... etc
}
Tworzymy metodę dla każdego „agregatu” (użytkownika, posta), więc wszystko jest ładnie rozdzielone.
Następnie twój Global.asax
:
AutoMapperWebConfiguration.Configure();
AutoMapperServicesConfiguration.Configure();
AutoMapperDomainConfiguration.Configure();
// etc
To trochę jak „interfejs słów” - nie można go narzucić, ale można się tego spodziewać, więc w razie potrzeby można kodować (i refaktoryzować).
EDYTOWAĆ:
Pomyślałem, że wspomnę, że teraz używam profili AutoMapper , więc powyższy przykład wygląda następująco :
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>();
}
}
Dużo czystszy / bardziej wytrzymały.