繁体   English   中英

.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解析,同时允许构造函数 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM