防止 Resharper“可能的空引用异常”警告

2023-12-26

假设我有一个带有只读属性的接口和一个具体类,其中该属性在构造函数中实例化并标记为只读。

internal interface IExample
{
    ObservableCollection<string> Items { get; }
}


internal class Example : IExample
{ 
    private readonly ObservableCollection<string> _items;

    public Example()
    {
       _items = new ObservableCollection<string>();
    }

    public ObservableCollection<string> Items
    {
       get { return _items; }
    }
}

当我使用接口 Resharper 时,它会警告我,调用代码中可能存在空引用。

public class ExampleWithWarnings
{
    public void Show()
    {
       IExample example = new Example();

       // resharper warns about null reference
       example.Items.Add( "test" );
    }
}

我意识到根据定义,接口并不能保证该属性具有值。 (我也认识到接口的属性并不理想)。但我知道这个财产永远有价值。

我可以在界面上添加任何魔法属性来阻止 Resharper 显示警告吗?我不想用禁用编译指示警告来装饰该类的所有用法。


是的,您可以使用一个属性:JetBrains.Annotations.NotNullAttribute。但您不需要在项目中添加对 ReSharper 的引用。您可以使用自己的实现:打开 ReSharper 选项,在“代码检查”>“代码注释”下,您将找到“将默认实现复制到剪贴板”。现在只需将其粘贴到项目中的代码文件中即可。您甚至可以更改命名空间。

然后在接口属性中打上属性。

您还应该查看“代码检查”>“设置”,然后选择“假设实体可以为空...当实体显式标记为 CanBeNull 属性或检查为空时”。这样,您只会在您明确标记为麻烦的成员中收到警告。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

防止 Resharper“可能的空引用异常”警告 的相关文章

随机推荐