Я использую Ninject для внедрения зависимостей как в моем веб-приложении MVC 5, так и в API Web API 2.В моем веб-API мне недавно нужно было возвращать View, поэтому я создал ManageController, который наследует Controller.Затем мне нужно было получить доступ к Сервису одним из методов ManageController.При попытке использовать Сервис я продолжал получать сообщение об ошибке, и точка останова Сервиса никогда не будет достигнута.После исследования я обнаружил, что Ninject, скорее всего, не настроен для контроллера (я получаю ошибку конструктора без параметров).Из того, что я могу сказать, у меня нет проекта Ninject.MVC5 и Ninject.Web.Common.WebHost, установленных в проекте Web API.В любом случае, поскольку мне нужен только один метод доступа к сервису 1, я решил искать обходной путь, а не устанавливать еще два пакета и, возможно, пришлось бы работать с некоторыми ошибками.Вот что я придумала.Кто-нибудь видит какие-либо проблемы с моим обходным путем?
Вот как RegisterServices выглядит в NinjectWebCommon.Это внедрение Сервисов в мои Контроллеры, которые прекрасно наследуют ApiController.
private static void RegisterServices(IKernel kernel)
{
kernel.Load(typeof(DataLayerModule).Assembly);
kernel.Load(typeof(ServiceLayerModule).Assembly);
kernel.Load(typeof(ApiModule).Assembly);
ApiModule.Kernel = kernel;
}
Вот как я вызываю Сервис.
private IMyService _myService;
public ManageController()
{
_myService = ApiModule.Kernel.Get<IMyService>();
}
Я не создаю новый экземплярЯдро.
Теперь я могу получить доступ к Сервису следующим образом.
await _myService.GetSomething(id);
Кто-нибудь видит какие-либо проблемы с этим?Стоит ли мне просто установить Ninject.MVC5 и Ninject.Web.Common.WebHost и добавить Сервис в ManageController?
Любая помощь очень ценится!Спасибо!