如何使用 IocManager 在样板 ASP.NET 注册服务



对于 ASP.NET 核心,我知道如何在类中使用ConfigureServices方法注册服务Startup

services.AddSingleton<IActionContextAccessor, ActionContextAccessor>();
services.AddScoped<IUrlHelper>(x => {
    var actionContext = x.GetRequiredService<IActionContextAccessor>().ActionContext;
    var factory = x.GetRequiredService<IUrlHelperFactory>();
    return factory.GetUrlHelper(actionContext);
});

如何在 ASP.NET 样板(ASP.NET Core(项目中使用 IocManager 注册相同的服务,以便可以在应用程序服务中使用它们?

AddSingleton

IocManager.Register<IActionContextAccessor, ActionContextAccessor>();

添加范围 + 工厂

IocManager.IocContainer.Register(
    Component
        .For<IUrlHelper>()
        .UsingFactoryMethod(kernel =>
        {
            var actionContext = kernel.Resolve<IActionContextAccessor>().ActionContext;
            var factory = kernel.Resolve<IUrlHelperFactory>();
            return factory.GetUrlHelper(actionContext);
        })
        .LifestyleCustom<MsScopedLifestyleManager>() // ASP.NET Core
     // .LifestylePerWebRequest()                    // ASP.NET MVC 5
);

引用

  • ASP.NET 样板文档:依赖注入 — 自定义/直接注册
  • IoC PerWebRequest 和工厂模式:aspnet样板/aspnet样板#3921
  • IScopedDependency: aspnet样板/aspnet样板#3945

最新更新