gpt4 book ai didi

c# - 为什么 ReSharper 告诉我 "User.Identity == null"总是错误的?

转载 作者:可可西里 更新时间:2023-11-01 03:09:23 26 4
gpt4 key购买 nike

我的一个 ASP.NET MVC 中有一个简单的属性 Controller类。

enter image description here

我以前见过很多次,所以理解消息的意思,但通常它是完全有道理的。然而,事实并非如此。要获取带下划线的语句,User 必须NOT 为 null,因此检查 User.Identity 没问题。

Identity 属性是 IPrincipal interface 的一部分, 并返回一个继承 IIdentity 的对象.

要继承此接口(interface)或与此相关的任何接口(interface),此属性必须是引用类型,因此可能为 null,对吗?

那么,为什么我心爱的 ReSharper 会发出呻吟声?

最佳答案

您说您正在使用 GenericPrinciple 作为 IPrincipal 的实现。对于此类,Identity 属性确实永远不能为null。如果您查看源代码(例如使用 JetBrains dotPeek ),则很容易看出。

为此,您可以感谢 ReSharper 对 .NET 框架类库的代码注释。

在我的 ReSharper 6.1 注释中,有一个与此相关的代码注释(在文件 ExternalAnnotations\mscorlib\mscorlib.4.0.0.0.Nullness.Generated.xml 中):

  <member name="M:System.Security.Principal.GenericPrincipal.#ctor(System.Security.Principal.IIdentity,System.String[])">
<parameter name="identity">
<attribute ctor="M:JetBrains.Annotations.NotNullAttribute.#ctor" />
</parameter>
</member>

虽然这只是针对构造函数,但我还没有为 Identity 属性找到一个。因此,要么您使用的 ReSharper 版本也具有该属性的注释,要么 ReSharper 正在做一些额外的分析。

无论如何,ReSharper 很聪明(而且是对的!)。

关于c# - 为什么 ReSharper 告诉我 "User.Identity == null"总是错误的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13053865/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com