配置服务() 中可能存在空引用返回警告



这是我的代码 -

IHost host = Host.CreateDefaultBuilder(args)
.ConfigureServices((context, services) =>
{
var cns = context.Configuration.GetConnectionString("db");
services.AddDbContext<DatabaseContext>(options => options.UseMySql(cns, ServerVersion.AutoDetect(cns)));
//Possible null reference return warning here-
services.AddScoped<IDatabaseContext>(provider => provider.GetService<DatabaseContext>());
services.AddScoped<CensusService>();
})
.Build();

要删除该警告,应该以什么方式编写该行?

ServiceProviderServiceExtensions.GetService<T>返回T?如果引用类型为空,则T引用类型将成为可为空的引用类型,而注册需要不可为空的引用类型。

使用ServiceProviderServiceExtensions.GetRequiredService<T>返回实例或抛出InvalidOperationException如果没有类型T的服务:

services.AddScoped<IDatabaseContext>(provider =>
provider.GetRequiredService<DatabaseContext>());

但是在DbContext注册的情况下,AddDbContext过载允许拆分合同和实现(如Julien在评论中建议的那样),因此,如果您只需要通过界面解决上下文,则可以使用其中之一:

services.AddDbContext<IDatabaseContext, DatabaseContext>(options => ...));

相关:

  • 可为空的引用类型

相关内容

  • 没有找到相关文章

最新更新