[英].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
解析,同时允许构造函数 arguments 被覆盖。 在这种情况下,我们指示 MS.DI 将 Portal.Site.DebugMode 提供给Portal.Site.DebugMode
的构造SBOTaskerHelper
中的第一个bool
属性。
请注意,MS.DI 中没有.As<T>().AsSelf()
。 您需要添加第二个注册并将注册转发到前一个注册。 这是使用services.AddXXX<IX>(p => p.GetRequiredService<X>())
完成的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.