fbpx
devstyle.pl - Blog dla każdego programisty
devstyle.pl - Blog dla każdego programisty
2 minut

Automapper a Dependency Injection


12.03.2010

W przykładzie z ostatniego posta wielu mogła nie podobać się następująca linijka:

  1:  string targetTimeZoneName = Config.TargetTimeZone;

I mają rację, gdyż można by to zamodelować jako zależność konwertera od konfiguracji – najlepiej przez constructor injection. Ale przecież Automapper sam tworzy konwertery, resolwery, formatery i wszystkie inne szmery bajery (reklama Ery?)…

HA! Nie było łatwo się do tego dokopać, ale poniższa instrukcja spowoduje, że wszystkie te “pomocnicze” typy będą instancjonowane przez Unity:

  1:  Mapper.Initialize(
  2:  	config =>
  3:  	config.ConstructServicesUsing(type => AppFacade.UnityContainer.Resolve(type))
  4:  	);

Oczywiście można w ten sposób zintegrować dowolny kontener.

I nasza pierwotna klasa prezentuje się teraz tak:

  1:  public class UtcToLocalTimeConverter : TypeConverter<DateTime, DateTime>
  2:  {
  3:  	private readonly IConfigProvider _configProvider;
  4:  
  5:  	public UtcToLocalTimeConverter(IConfigProvider configProvider)
  6:  	{
  7:  		_configProvider = configProvider;
  8:  	}
  9:  
 10:  	protected override DateTime ConvertCore(DateTime source)
 11:  	{
 12:  		string targetTimeZoneName = _configProvider.Server_TimeZone;
 13:  		// conversion...

Nice.

Przyznać muszę, że Im bardziej poznaję Automappera (a zdarza mi się do niego wrócić raptem raz na kilka miesięcy), tym bardziej imponuje mi mnogość zawartych w nim “smaczków”.

0 0 votes
Article Rating
4 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments

Kurs Gita

Zaawansowany frontend

Szkolenie z Testów

Szkolenie z baz danych

Książka

Zobacz również