在.NET 6中,我有一个仓库异步返回字符串,这个字符串可能来自REST API或文本文件。由于结果可能为空,因此返回类型是可空字符串,包含在任务
添加模拟库后,我开始收到警告信息: 空引用类型的可空性与目标类型 'Task<string?>' 的类型不匹配。
为了解决这个问题,我不想使用预处理指令
相反,应该采取什么正确的方式来解决这个问题呢?
Task<string?>
中:public interface IFooRepository
{
Task<string?> FetchAsync(string path);
}
一个具体的存储库类会长这样:
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;
}
}
接下来,我添加了一个模拟的存储库类,用于单元测试。它只是简单地返回常量值。(显然,它永远不会返回null。)
public class MockFooRepository : IFooRepository
{
public Task<string?> FetchAsync(string path)
{
string? result = "ok!";
return Task.FromResult(result);
}
}
添加模拟库后,我开始收到警告信息: 空引用类型的可空性与目标类型 'Task<string?>' 的类型不匹配。
为了解决这个问题,我不想使用预处理指令
#pragma warning disable CS8619
来隐藏警告信息。相反,应该采取什么正确的方式来解决这个问题呢?