У меня есть решение с двумя соответствующими (на этот вопрос) проектами и несколькими другими;
- Библиотека классов с функциональностью, используемой несколькими другими проектами.
- Приложение ASP.NET MVC.
Мой вопрос в основном, где я должен делать IoC с Ninject 2, учитывая...
- Библиотека классов нуждается в некоторой любви DI, среди прочего, в классах репозитория, которым нужны веб-запросы для определенных объектов сеанса (думаю, Единица работы).
- Для MVC-приложения требуется DI, поскольку с Ninject 2 вы в основном наследуете NinjectHttpApplication.
- Модульные тесты для библиотеки классов должны знать об этом, чтобы внедрить другой набор репозиториев.
- Модульные тесты для веб-приложения необходимо вводить по той же причине.
Я нарисовал себя в психическом уголке здесь, потому что я видел только три варианта. DI в библиотеке классов, DI в веб-приложении или обоих, но есть проблемы с каждым из них:
- Я не могу сделать DI только в библиотеке классов, так как приложение MVC должно наследовать от NinjectHttpApplication для начала.
- Я не могу делать DI только в приложении MVC - библиотека классов используется другими библиотеками, в конце концов, и MVC-приложение не должно слишком много знать о внутренних функциях библиотеки.
- Я думаю, это единственный выход, который я вижу: Независимый IoC для обоих проектов. Библиотека классов и приложение MVC имеют свою собственную настройку IoC и делают DI для своих вещей, не заботясь друг о друге.
Есть ли у кого-нибудь "лучшие практики" или рекомендации о том, как это сделать? Я не могу себе представить, что я первый человек, оказавшийся в этой ситуации, и было бы неплохо узнать, что "правильный" способ сделать это...
Спасибо!