如果服务未注册,请勿调用该方法。

3

如果服务未注册,我的方法不应调用ApplyAsync()。我试图添加条件null,但在调用该方法的时候仍然会得到空引用。我做错了什么吗?

private static async Task ApplyMigrationsAsync(CancellationToken token)
    {
        using var scope = Startup.ServiceProvider.CreateScope();
        var migration = scope.ServiceProvider.GetService<M.Migrations.IMigration>();
        await migration?.ApplyAsync(token);
    }

请勿在提问中上传代码、数据或错误的图片。请将它们转换为文本形式并直接粘贴到问题描述中。这样可以使您的问题更易于阅读和理解,并且有助于其他人更好地回答您的问题。 - JonasH
1个回答

3

应用条件访问?并等待结果将导致等待null,而这是无法等待的。

使用if语句保护您的访问,并在if块内等待:

private static async Task ApplyMigrationsAsync(CancellationToken token)
    {
        using var scope = Startup.ServiceProvider.CreateScope();
        var migration = scope.ServiceProvider.GetService<M.Migrations.IMigration>();
        if (migration != null) 
        {
            await migration.ApplyAsync(token);
        }
    }


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接