c# - ReSharper 警告 : Base Class [NotNull] While Derived Class Property [CanBeNull] Conflict

标签 c# overriding resharper nullable

考虑以下 C#.Net 代码:

using System.Xml;

internal class MyXmlReaderClass : XmlReader
{
    private readonly XmlReader _innerReader;

    public MyXmlReaderClass(...other_parameters... , XmlReader innerReader)
    {
        _innerReader = innerReader;
    }
    //... lots of code has been left out, here ...

    public override string LocalName
    {
        get { return _innerReader.LocalName; }
    }
    //... lots more code has been left out, here ... 
}

在属性 LocalName 中,ReSharper 在类型 string 下放置了一个下划线,并带有警告,“string”是(明确或隐含的)[ NotNull]

我以为我理解了关于可空对象的概念。除了这种情况外,我已经能够从我的代码中重构大部分这些问题。

如果我正确理解我的世界,基类 (XmlReader) 就是 ReSharper 标识为 [NotNull] 的内容。这意味着 ReSharper 认为我对该属性的覆盖可能会返回 null,而基础永远不会返回 null。

我很难思考如何使用某种覆盖来覆盖基类属性 LocalName ,这样基类和派生类。

我的问题由多个部分组成,“ReSharper 究竟在识别什么,我该如何解决不一致问题?”

是的,我通过 StackOverflow 进行了高低搜索,并使用了 Google,但找不到这个具体示例。

谢谢。

最佳答案

这不是 ReSharper 警告,而是 "type highlighting" of the Implicit Nullability extension .

What exactly is ReSharper identifying?

突出显示通知您,您的成员的返回类型隐式为 [NotNull],因为基本成员为 [NotNull]。

基础成员 XmlReader.LocalName 是 [NotNull] 因为 External Annotation由 ReSharper 提供。

How do I fix the inconsistency?

您不必修复它,因为它不是警告/建议。这只是一个突出显示。

如果您不喜欢这种突出显示,您可以在隐式可空性页面的 R# 选项中禁用它。

关于c# - ReSharper 警告 : Base Class [NotNull] While Derived Class Property [CanBeNull] Conflict,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45091425/

相关文章:

c# - 空条件结果类型,我错过了什么吗?

c# - 这是 resharper 中的错误吗?

c# - 无法通过 302 重定向在 FireFox/Chrome 中读取 cookie,但在 IE 中有效

c# - 如何在 asp.net 下载文件之前调用 javascript 函数?

c# - 在预处理语句 C# 中使用 SqlDBType.Decimal

c# - 为什么DrawableGameComponent可以使用实例类?

c++ - 覆盖运算符在 C++ 中无效

c# - a-synchronized 并行任务的正确方法

c++ - 模板方法覆盖非模板方法

sencha-touch - 为什么每当我从脚本标签中点击 "foo foo"时 Resharper 都会输入 "Enter"