.NET Core DI 相当于 Autofac 的 WithParameter
.NET Core DI equivalent to Autofac's WithParameter
我通过以下注册在 Autofac 中使用它:
builder.RegisterType<SBOTaskerHelper>()
.As<ISBOTaskerHelper>()
.AsSelf()
.UsingConstructor(
typeof(IPrincipal),
typeof(IPortalSettings),
typeof(ILogger<SBOTaskerHelper>),
typeof(bool))
.WithParameter("debugMode", Portal.Site.DebugMode)
.InstancePerRequest();
转向ASP.NET核心依赖注入。如何传递构造函数和参数来配置服务DI?
以下注册大致相同:
services.AddScoped<SBOTaskerHelper>(
p => ActivatorUtilities.CreateInstance<SBOTaskerHelper>(
p, Portal.Site.DebugMode));
services.AddScoped<ISBOTaskerHelper>(
p => p.GetRequiredService<SBOTaskerHelper>());
ActivatorUtilities.CreateInstance
是 MS.DI 的辅助方法。它允许创建给定类型,其中它的依赖项是从提供的 IServiceProvider
解析的,同时允许覆盖构造函数参数。在这种情况下,我们指示 MS.DI 将 Portal.Site.DebugMode
提供给 SBOTaskerHelper
的构造函数中的第一个 bool
属性。
注意MS.DI中没有.As<T>().AsSelf()
。您需要添加第二个注册并将注册转发到上一个注册。这是使用 services.AddXXX<IX>(p => p.GetRequiredService<X>())
.
完成的
我通过以下注册在 Autofac 中使用它:
builder.RegisterType<SBOTaskerHelper>()
.As<ISBOTaskerHelper>()
.AsSelf()
.UsingConstructor(
typeof(IPrincipal),
typeof(IPortalSettings),
typeof(ILogger<SBOTaskerHelper>),
typeof(bool))
.WithParameter("debugMode", Portal.Site.DebugMode)
.InstancePerRequest();
转向ASP.NET核心依赖注入。如何传递构造函数和参数来配置服务DI?
以下注册大致相同:
services.AddScoped<SBOTaskerHelper>(
p => ActivatorUtilities.CreateInstance<SBOTaskerHelper>(
p, Portal.Site.DebugMode));
services.AddScoped<ISBOTaskerHelper>(
p => p.GetRequiredService<SBOTaskerHelper>());
ActivatorUtilities.CreateInstance
是 MS.DI 的辅助方法。它允许创建给定类型,其中它的依赖项是从提供的 IServiceProvider
解析的,同时允许覆盖构造函数参数。在这种情况下,我们指示 MS.DI 将 Portal.Site.DebugMode
提供给 SBOTaskerHelper
的构造函数中的第一个 bool
属性。
注意MS.DI中没有.As<T>().AsSelf()
。您需要添加第二个注册并将注册转发到上一个注册。这是使用 services.AddXXX<IX>(p => p.GetRequiredService<X>())
.