は、次のC#.NETコードを検討中:プロパティ、LocalName
でReSharperの警告:基本クラスは、[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で高低を検索していますが、この特定の例は見つかりませんでした。
ありがとうございます。