在Startup.cs中使用DI解析服务

本文关键字:DI 服务 Startup cs | 更新日期: 2023-09-27 18:24:58

我用过autofac,mvc 4.0。我已经在我的mvc 4.0应用程序的Application_Start中注册了接口和模块。我还使用了自动连线的属性,如

protected void Application_Start()
        {
//Other codes...
builder.RegisterType<Service>()
                .As<IService>()
                .InstancePerLifetimeScope()
                .PropertiesAutowired());
      builder.RegisterControllers(typeof (MvcApplication).Assembly)
                    .PropertiesAutowired();
...
}

但是,依赖项在启动类中没有解析,并且对象始终为null。

 public class Startup
    {
    public IService MyService { get; set; }
        public void Configuration(IAppBuilder app)
        {
            MyService.SomeMetod(3, "");
        }
     }

在上面的代码中,我希望MyService是一个对象,但事实并非如此,所以它总是空的,我做错了什么吗?请帮助。

请注意,di在控制器中工作,它不仅仅在启动类中工作!

在Startup.cs中使用DI解析服务

我希望AutoFac能像在控制器类中那样自动解决依赖关系,它是通过手动解决的,如下所示:

 var myService = (IService)DependencyResolver.Current.GetService(typeof(IService ));