2016-12-30 2 views
1

Как зарегистрировать мой класс AutoMapper в SimpleInjector?AutoMapper and SimpleInjector

Это часть моего класса, где зарегистрировать Mapper SimpleInjector:

container.RegisterSingleton(Mapper.Configuration); 
container.Register<IMapper>(**--What should I put here?--**) 

Это мой MapperConfig класс:

public class AutoMapperConfig 
{ 
    public static MapperConfiguration RegisterMappings() 
    { 
     return new MapperConfiguration(cfg => 
     { 
      cfg.AddProfile(new DomainToViewModelMappingProfile()); 
      cfg.AddProfile(new ViewModelToDomainMappingProfile()); 
     }); 
    } 
} 
+1

обычно я вызываю AutoMapperConfiguration.Configure(); в моем приложении GlobalAsax.cs на app_startup –

+0

Возможный дубликат [Как зарегистрировать AutoMapper 4.2.0 с помощью простого инжектора] (http://stackoverflow.com/questions/35370733/how-to-register-automapper-4-2-0- с-простой-инжектор) – G0dsquad

+0

Да, как говорит @federicoscamuzzi, более типично инициализировать AutoMapper в AppStart => 'public static class AutomapperConfig {// статический класс конфигурации, например Mapper.Initialize (cfg => {...})} ' – G0dsquad

ответ

1

изменить ваш automapperConfig класс к статическому .. как это:

public static class AutoMapperConfig 
{ 
    public static MapperConfiguration RegisterMappings() 
    { 
     return new MapperConfiguration(cfg => 
     { 
      cfg.AddProfile(new DomainToViewModelMappingProfile()); 
      cfg.AddProfile(new ViewModelToDomainMappingProfile()); 
     }); 
    } 
} 

затем назовите его в файле GlobalAsax.cs в App_start следующим образом:

public class WebApiApplication : HttpApplication 
    { 
     protected void Application_Start() 
     { 
      AreaRegistration.RegisterAllAreas(); 
      GlobalConfiguration.Configure(WebApiConfig.Register); 
      FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
      RouteConfig.RegisterRoutes(RouteTable.Routes); 


      // Register Mapping Configuration on Start up 
      AutoMapperConfiguration.Configure(); 

     } 

     protected void Application_End() 
     { 
      //Cleanup all resources 

     } 
    } 
+0

OK, но если бы я не использовал ASP .Net, если бы я использовал настольное приложение или консоль – Dariel

+0

, попробуйте найти эквивалент App_start для своей консоли или приложения WPF .. также, может быть, в вашей программе .cs на первой строке вы можете вызвать AutoMapperConfiguration.Configure(); –

Смежные вопросы