NET 6 - 引用类型的可空性警告

NET 6 - Nullability of reference types warning

在 NET 6 中,我有一个异步存储库 returns 字符串,它可能来自 REST API 或文本文件。由于结果可能为空,因此 return 类型在任务 Task<string?>:

中是可为空的字符串
public interface IFooRepository
{
    Task<string?> FetchAsync(string path);
}

存储库的具体 class 看起来像:

public class FooRepository : IFooRepository
{
    public async Task<string?> FetchAsync(string path)
    {
        string? result = null;

        if (File.Exists(path))
        {
            result = await File.ReadAllTextAsync(path);
        }

        return result;
    }
}

接下来,我添加了单元测试使用的模拟存储库 class。这只是 return 的常量值。 (显然,它永远不会 return null。)

public class MockFooRepository : IFooRepository
{
    public Task<string?> FetchAsync(string path)
    {
        string? result = "ok!";
        return Task.FromResult(result);
    }
}

添加模拟存储库后,我开始收到警告消息:

Nullability of reference types in value of type 'Task' doesn't match target type 'Task<string?>'.

为了处理警告,我不想隐藏 使用预处理器指令的警告消息#pragma warning disable CS8619

相反,处理该问题的正确方法是什么?

调用 FromResult 时自行指定泛型参数

return Task.FromResult<string?>(result);