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!

questionAnswers(1)

yourAnswerToTheQuestion