2017-07-13 5 views
1

は、次のC#.NETコードを検討中:プロパティ、LocalNameReSharperの警告:基本クラスは、[NOTNULL]派生クラスプロパティ[CanBeNull】競合

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 ... 
} 

を、ReSharperのは、タイプ、string下に下線を配置します'文字列'は(明示的または暗黙的に)[NotNull]です。

私は、ヌル可能オブジェクトに関する遊びの概念を理解していると思っていました。私は、この場合を除いて、これらの問題のほとんどを自分のコードからリファクタリングすることができました。

私の世界が正しく理解されている場合、ベースクラス(XmlReader)はReSharperが[NotNull]と認識しているものです。つまり、ReSharperは、ベースがヌルを返すことはないが、プロパティのオーバーライドによってnullが返される可能性があると考えていることを意味します。

基底クラスのプロパティLocalNameをオーバーライドする方法について、私は心配していません。基本クラスと派生クラスの間のプロパティに競合がないようにします。

私の質問は、「正確にReSharperを特定するのは何ですか?そして、どのように矛盾を修正するのですか?

はい、私はStackOverflowで高低を検索していますが、この特定の例は見つかりませんでした。

ありがとうございます。

答えて

2

これはReSharperの警告ではありません。"type highlighting" of the Implicit Nullability extensionです。

ReSharperは正確に何を識別していますか?

強調しは、ベース部材は、[NOTNULL]であるので、あなたのメンバーの戻り値の型が暗黙的に[NOTNULL]であることをを通知します。

ReSharperが提供するExternal Annotationのため、ベースメンバーXmlReader.LocalNameは[NotNull]です。

どのように矛盾を修正しますか?

警告/示唆がないので、修正する必要はありません。それは単なるハイライトです。

この強調表示が嫌な場合は、暗黙的ヌル可能性ページのR#オプションで無効にすることができます。

関連する問題