如何解决.Net Core Nullable-有关的混乱错误
我有一个.Net Core 3.1 ASP.NET应用程序,其中启用了nullable:
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<Nullable>enable</Nullable>
它还使用Microsoft.CodeAnalysis.FxCopAnalyzers
(3.3.0)和StyleCop.Analyzers
。
我有一个带有以下签名的方法:
public async Task<SomeResponse> DoSomethingAsync(IIdentity identity)
在这种方法中,我有以下内容:
string? adfsUpn = identity.Name;
但是,这给了我警告:
错误CA1062在外部可见方法[...]中,验证参数 使用之前,“身份”为非空。如果合适,扔一个 ArgumentNullException当参数为null或添加代码合同时 先决条件断言非null参数。
基本上,这表明除非我首先对其进行了null测试,否则我不应该访问.Name
对象上的identity
属性。
但是......
当我(从控制器)调用此方法时,我传入了this.User.Identity
,并且智能感知告诉我this.User
和this.User.Identity
都不为空。
回到我的方法...我在顶部添加以下保护子句:
if (identity == null)
{
.....
}
但是现在我被告知,身份永远不能为空,identity == null
将永远为假。这就是我希望使用“ Nullable”的原因,但是似乎Visual Studio或FxCop或StyleCop不能正确解释这种情况。
我可能只是添加一个编译指示来忽略此内容,但是在我这样做之前,只想检查一下我是否没有丢失任何东西...。
解决方法
看起来像这样的false positive目前是已知的。看起来像是on their radar,但一段时间内没有任何动静。
在这种特殊情况下,我个人可能只是隐瞒该警告。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。