2017-05-31 6 views
0

を取得し、それが正常に動作しますか?警告は抑制されていますが、ロジックに影響するかどうかは不明です。使い捨てオブジェクトを返すとCA2000警告

XmlNodeReader tempObj =new XmlNodeReader(section); 
XmlNodeReader retObj=null; 
retObj = tempObj; 
tempObj.Dispose(); 
return ser.method(retObj); 
+0

まあ、我々はser.method'が何をするか '見当がつかないが、パッシングオブジェクトをメソッドに変換することは、私にとっては悪い考えです。 –

+0

CA2000は時々あなたに偽陽性を与えますが、通常は奇妙に見える何かの兆候であるため、すべて悪くはありません。オブジェクトを構成するコードの領域も所有するかどうか、またはオブジェクトを受け取った人に所有権を渡すかどうかを判断する必要があります。一度あなたは、警告を取り除く方法を調べることができると決めました。 –

+0

場合によっては、「ファクトリメソッド」を作成する場合は、メソッドの名前を単に指定するだけで警告を取り除くことができます。メソッド名の接頭辞として「Get」と「Create」を試してみてください。それらのどれかが助けになるならば。 –

答えて

2

まあ我々はser.methodが何をするかわかりませんが、methodに配置されたオブジェクトを渡すことは私には悪いアイデアのように思えます。基本的に、あなたの "修正"は悪いです。

3つのここでの可能性(そしておそらく他の人が、これらが主なものです)があります。そのパラメータ自体の

  • ser.method処分が。 (これはおそらく悪い考えですが、そうするかもしれません)。その場合、元のコードは問題ありません。
  • ser.methodは、そのパラメータを処分しませんが、それはまだそのパラメータを処分しない
  • ser.method
  • に配置されていないリーダーに依存している何かを返し、開いたままにリーダーを必要としない何かを返します。

私はこれらの最後は、あなたがあなたのコードを変更する必要があり、その場合には場合、ある願っています:

using (XmlNodeReader reader = new XmlNodeReader(section)) 
{ 
    return ser.method(reader); 
} 
+0

こんにちは。 ser.methodはSystem.XMLのDeserialize(XmlReader xmlReader)メソッドです。 – user3386619

+0

@ user3386619:なぜ、元の質問でそれを使わなかったのですか?私たちは推測する必要はありませんか?理想的には、質問をするときに[mcve]を入力します。 –

+0

投稿中にルールに従わないことをお詫びします。これからもこれを心に留めておきます。ご回答有難うございます。 :-) – user3386619

関連する問題