.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.Userthis.User.Identity都不为空。

回到我的方法...我在顶部添加以下保护子句:

if (identity == null)
{
    .....
}

但是现在我被告知,身份永远不能为空,identity == null将永远为假。这就是我希望使用“ Nullable”的原因,但是似乎Visual Studio或FxCop或StyleCop不能正确解释这种情况。

我可能只是添加一个编译指示来忽略此内容,但是在我这样做之前,只想检查一下我是否没有丢失任何东西...。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)