首页 新闻 搜索 专区 学院

.Net Core 3.0使用单例注入,启动的时候就会创建实例吗?

0
[已解决问题] 解决于 2019-10-25 14:16
    public class Product
    {
        private readonly Order _order;

        public Product(Order order)
        {
            _order = order;
        }
    }

    public class Order
    {
    }

只注入Product

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();

            services.AddSingleton<Product>();
        }

启动的时候会提示以下错误

InvalidOperationException: Unable to resolve service for type 'WebApplication6.Models.Order' while attempting to activate 'WebApplication6.Models.Product'.

不是应该是再第一次使用的时候才会创建么

oldli的主页 oldli | 初学一级 | 园豆:175
提问于:2019-10-21 16:21

3.0里面,会在开发环境下启动的时候判断是否要监测注入依赖关系,默认true

oldli 1年前
< >
分享
最佳答案
1

Unable to resolve service,错误信息是 resolveresolve 不等于创建

奖励园豆:5
dudu | 高人七级 |园豆:38801 | 2019-10-21 17:19

开发环境下启动的时候,会判断ValidateOnBuild选项是否true,是的话,就会验证注入服务依赖关系,如果注入了A,A依赖B,但是没注入B,即使没有用到A,也会报错,手动把该属性设置false即可,

return Microsoft.Extensions.Hosting.Host.CreateDefaultBuilder(args)
                    .UseDefaultServiceProvider(options => { options.ValidateOnBuild = false; })
                    .ConfigureWebHostDefaults(webBuilder =>
                    {
                        webBuilder.UseStartup<TStartup>()
                            .UseLogging()
                            .UseUrls(hostOptions.Urls);
                    });
oldli | 园豆:175 (初学一级) | 2019-10-25 14:16
其他回答(3)
0

https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-3.0

这个报错是无法在实例化的时候注入参数(Order),Order也需要注入进去

通信的搞程序 | 园豆:1238 (小虾三级) | 2019-10-21 17:20
0

Product 在controller里面用到了么?

czd890 | 园豆:9192 (大侠五级) | 2019-10-22 16:13
0

3.0里面,会在开发环境下启动的时候判断是否要监测注入依赖关系,默认true

oldli | 园豆:175 (初学一级) | 2019-10-25 14:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册