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

标签 c# asp.net-mvc dependency-injection autofac

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

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 是在 Controller 中工作的,它不只在启动类中工作!

最佳答案

我原以为 AutoFac 会像在 Controller 类中那样自动解析依赖关系,但使用手动解析已解决,如下所示:

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

关于c# - 在 Startup.cs 中使用 DI 解析服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33995197/

相关文章:

c# - 更新行时如何解决DbUpdateConcurrencyException?

c# - MvvmCross Android 绑定(bind)字符串数组

c# - 如何在 C# 中递归遍历并记录 HttpRequestMessage 的属性?

asp.net - Asp.net mvc中应该有一个服务层吗?

angular - 如何从Angular中的另一个服务调用服务的特定实例?

c# - Xamarin 无法访问隐藏代码的控件

c# - 在序列化之前获取 POST 或 PUT 请求正文(.NET、C#)

asp.net-mvc - 有什么方法可以避免 iisexpress 每次构建时加载 DLL 时的启动延迟?

java - 寻找 Dagger 辅助注入(inject)的示例

c# - 将 IoC 容器作为依赖项注入(inject)有多糟糕?