Проблемы с инъекциями в ASP.NET MVC 3 - PullRequest
0 голосов
/ 21 июня 2011

У меня есть три проекта, которые будут использовать DI.Мой проект - сайт ASP.NET MVC 3.Я установил пакет ninject MVC от nuget, который добавил мой загрузчик.Я зарегистрировал свою привязку.

NinjectMVC3.cs

        private static void RegisterServices(IKernel kernel)
        {
            kernel.Bind<IUserService>().To<UserService>();
        }   

У меня есть отдельный проект, который содержит UserService и IUserService.В этом проекте у меня также есть класс фабрики-одиночки для создания моих сервисов.

public class ServiceFactory : BaseFactory<ServiceFactory>
    {
        [Inject]
        public IUserService UserService { get; set; }
    }

Есть ли причина, по которой вышеупомянутое всегда является нулевым, когда я вызываю ServiceFactory.Instance.UserService?

1 Ответ

2 голосов
/ 21 июня 2011

Гадание: Скорее всего, фабрика не создана Ninject.

Но так как вы не должны использовать шаблон Singleton при выполнении Dependency Injection, это должно быть легко решено.

  1. Передайте IUserService в конструктор любого объекта, который должен его знать.
  2. Свяжите его как Singleton kernel.Bind<IUserService>().To<UserService>().InSingletonScope();
...