Wstrzykiwanie zależności a klasy bez początku.

0

Chyba mam problem ze zrozumieniem idei lub problem architektoniczny.
Otóż uczę się ASP.NET WebAPI o pomyślałem, że zbuduje większy projekt. I mam coś takiego

-> Solucja "N-Tier Architecture"
-> Katalog "Data"
-> Projekt "Data.Models" - klasami POCO
-> Projekt "Data.Core" - kontekstem, repozytorium i unit of work. Z czego każdy jest opisany za pomocą interfejsów
-> Katalog "Business"
-> Projekt "Services" - tutaj interfejs pośredniczący między projektami niżej a DAL. Tak by w WebAPI lub innych projektach nie operować bezpośrednio na DAL
-> Projekt "Mapper" - opakowanie automapper na mapowanie modeli z "Data" do "Business". Też interfejs i implementacja
-> Projekt "Models" - modele/viewmodele
-> Katalog "Applications"
-> Projekt "WebAPI" - ten powinien korzystać tylko z "Business"

I tutaj pojawia się problem ponieważ w "Data" i "Business" wstrzykuje implementacje poprzez konstruktor ale te projekty są czystą .netowską biblioteką klas i nie ma klasy "startup" która może wywołać np. "Unity IoC" i przypisać zależności. Tak jak w WebAPI.

Jak coś takiego rozwiązać? A może popełniłem gdzieś błąd w projektowaniu?

0

Nie wiem jak działa Unity IoC, ale generalnie kontenery IoC konfiguruje się podczas startu aplikacji webowej, czyli w metodzie Application_Start.

PS - Mappery to nie jest żaden Business tylko infrastruktura aplikacji.

0

No tak w warstwie aplikacji w tym przypadku w projekcie WebAPI mógłbym wstrzyknać tylko, że w projektach "Data" sa też zależności do wstrzyknięcia między soba np. repozytorium z kontekstu a projekt WebAPI nie ma dostępu do tej warstwy:

Applications <-> Business <-> DAL

Więc by w Applications obsłużyć DIP dla DAL to musiał bym podać referencje a tego chce uniknać. Bo to mieszanie warstw.

1 użytkowników online, w tym zalogowanych: 0, gości: 1