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'.
不是应该是再第一次使用的时候才会创建么
Unable to resolve service
,错误信息是 resolve
,resolve
不等于创建
开发环境下启动的时候,会判断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);
});
https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-3.0
这个报错是无法在实例化的时候注入参数(Order),Order也需要注入进去
Product 在controller里面用到了么?
3.0里面,会在开发环境下启动的时候判断是否要监测注入依赖关系,默认true
3.0里面,会在开发环境下启动的时候判断是否要监测注入依赖关系,默认true
– oldli 4年前