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”.

Nie przegap kolejnych postów!

Dołącz do ponad 9000 programistów w devstyle newsletter!

Zapisując się na newsletter zgadzasz się na przetwarzanie Twoich danych osobowych w celu wysyłania na wskazany przez Ciebie adres e-mail informacji handlowych o nowościach, promocjach, produktach i usługach związanych z serwisem devstyle.pl. Będzie to marketing bezpośredni, do realizacji którego wykorzystam Twoje telekomunikacyjne urządzenia końcowe. Administratorem Twoich danych osobowych będzie Maciej Aniserowicz prowadzący działalność gospodarczą w Białymstoku (15-215) przy ul. Konopnickiej 14/8, NIP 5422824401. Przysługuje Tobie prawo do cofnięcia zgody, żądania wglądu do Twoich danych, wniesienia sprzeciwu co do ich przetwarzania, sprostowania, usunięcia i ograniczenia przetwarzania. Więcej informacji o tym jak przetwarzam Twoje dane znajdziesz na devstyle.pl/RODO. Powered by ConvertKit
Notify of

Kurs Gita

Zaawansowany frontend

Szkolenie z Testów

Szkolenie z baz danych

Facebook

Książka

Zobacz również