私は特定のクラスを保存したいと思いますし、xml-serializationは私のケースではそれをしません。うまく動作しますが、FxCopはそれを好きではありません.FxCopは通常、適切なアドバイスと理由を提供しています。FxCopクレーム:公開されたコンクリートXMLタイプと悪い改善
今回は、これがどのように改良されているのか分かりません。
public void Save()
{
XmlDocument doc = new XmlDocument();
XmlNode XmlNodeJob = doc.CreateElement("Job");
doc.AppendChild(XmlNodeJob);
OtherclassSave2(XmlNodeJob);//Node as Parameter
}
public void OtherclassSave2(XmlNode node)
{
}
そして、これはFxCopのは不満です::
この
は私が持っていたものである。 「それはもはや具体的な型 'のXmlNode' を公開するように、メンバーのOtherclassSave2(XmlNodeの) 'を変更していない使用IXPathNavigable XMLデータソースを表現することができます。そして今、私の素晴らしい解決策:
public void Save() { XmlDocument doc = new XmlDocument(); XmlNode XmlNodeJob = doc.CreateElement("Job"); doc.AppendChild(XmlNodeJob); OtherclassSave2(XmlNodeJob.CreateNavigator());//Interface from a node's navigator } public void OtherclassSave2(IXPathNavigable nav) { XmlNode node = (XmlNode)(nav.CreateNavigator().UnderlyingObject); }
私は他の方法で私のノードを取得し、FxCopのは幸せですが、私は実際に改善が表示されていないと私は必要なこの道ノードに物を追加してください。読み込む物ではありません。 (のXmlNode GetMeTheNodeに無効SaveInThisNode(XmlNodeの)の変更)が、CreateElements経由でノードを作成するために、私は、パラメータとして使用することはできないのです常にXmlDocumentオブジェクトを必要とするが、約
でも、私は私ができましたすべてのステップで新しいXmlDocumentsを作成してください。
私のソリューションはシンプルで、私がやりたかったすべての作業にはうまく機能しましたが、FxCopでは明らかに悪くて複雑ではない解決策がないようです。
私が理解していることは、あなたがそれを実装するクラスではなく、そのインタフェースを捨てることになっていることです。かなり一般的な概念。時には、物事が楽になります。それはそれらの "meh"ガイドラインの1つです。 – Zenexer
'XmlNode'は' IXPathNavigable'を実装しています、y答えを見てください。あなたは非常に簡単に警告を修正することができます。 – ken2k
あなたの問題を解決するためにメソッドを内部にすることもできます。 –