Gdzie należy wykonać wtrysk za pomocą Ninject 2+ (i jak zorganizować moje moduły?)
Mam rozwiązanie z dwoma istotnymi (w tym pytaniu) projektami i kilkoma innymi;
Biblioteka klas z funkcjonalnością wykorzystywaną przez kilka innych projektów.Aplikacja ASP.NET MVC.Moje pytanie jest w zasadzie tam, gdzie powinienem zrobić IoC z Ninject 2, biorąc pod uwagę ...
Biblioteka klas potrzebuje trochę miłości DI, między innymi w klasach repozytoriów, które wymagają obiektów sesji specyficznych dla żądania WWW (pomyśl o jednostce pracy).Aplikacja MVC potrzebuje DI, ponieważ z Ninject 2 zasadniczo dziedziczysz po NinjectHttpApplication.Testy jednostkowe dla biblioteki klas muszą być tego świadome, aby wprowadzić inny zestaw repozytoriów.Z tego samego powodu należy wprowadzić testy jednostkowe dla aplikacji internetowej.Namalowałem siebie w mentalnym zakątku, ponieważ widziałem tylko trzy opcje na początek. DI w bibliotece klas, DI w aplikacji internetowej lub w obu, ale są problemy z każdym:
Nie mogę zrobić DItylko w bibliotece klas, ponieważ aplikacja MVC musi dziedziczyć z NinjectHttpApplication na początku.Nie mogę zrobić DI tylko w aplikacji MVC - w końcu biblioteka klas jest używana przez inne biblioteki, a aplikacja MVC i tak nie powinna zbyt wiele wiedzieć o wewnętrznych elementach biblioteki.Myślę, że to jedyne wyjście, jakie widzę: niezależne IoC dla obu projektów. Biblioteka klas i aplikacja MVC mają swoje własne ustawienia IoC i robią DI dla swoich rzeczy, nie dbając o siebie nawzajem.Czy ktoś ma jakieś „najlepsze praktyki” lub wskazówki, jak zrobić coś takiego? Nie mogę sobie wyobrazić, że jestem pierwszą osobą, która skończyła w tej sytuacji i na pewno byłoby miło wiedzieć, jaki „właściwy” sposób to zrobić…
Dzięki!