Я использовал autofac, mvc 4.0. Я зарегистрировал интерфейсы и модули в Application_Start моего приложения mvc 4.0. Я также использовал свойство автоматического проводные напримерРешить услугу Использование DI в Startup.cs
protected void Application_Start()
{
//Other codes...
builder.RegisterType<Service>()
.As<IService>()
.InstancePerLifetimeScope()
.PropertiesAutowired());
builder.RegisterControllers(typeof (MvcApplication).Assembly)
.PropertiesAutowired();
...
}
Однако Зависимости не разрешено в классе запуска, а объект всегда нуль.
public class Startup
{
public IService MyService { get; set; }
public void Configuration(IAppBuilder app)
{
MyService.SomeMetod(3, "");
}
}
В коде выше я ожидал MyService быть объектом, но его не так это всегда пустой, я делаю что-то не так, пожалуйста, помогите.
Обратите внимание: di работает в контроллерах, он не работает только в классе запуска!
Для того, чтобы вашей зависимости, который будет введен в ваш класс 'Startup', класс, создавший экземпляр вызывающего класса, должен был быть создан вашим контейнером DI. Если это не так, это не сработает :) – Luke
Возможный дубликат [Autofac Ввод данных в класс запуска OWIN] (http://stackoverflow.com/questions/33654149/autofac-injection-of-data-into- owin-startup-class) – Martin