我想保存某些类,因为在我的情况下xml-serialization不会这样做我将值手动保存到xml文档中.工作正常,但FxCop不喜欢它,因为FxCop通常给出了很好的建议和原因,为什么我不应该以某种方式做事情,我试着让它快乐.
这一次,我不明白这是一个改进.
这就是我所拥有的:
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)
{
}
Run Code Online (Sandbox Code Playgroud)
这就是FxCop所抱怨的: "修改成员'OtherclassSave2(XmlNode)',以便它不再公开具体类型'XmlNode'.使用IXPathNavigable来表示XML数据源."
现在我的解决方案很棒:
Run Code Online (Sandbox Code Playgroud)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很高兴,但我真的没有看到改进,我需要一个节点来添加内容,而不是要阅读.
我虽然将void SaveInThisNode(XmlNode)更改为XmlNode GetMeTheNode()但是要通过CreateElements创建节点,我需要XmlDocument对象,我不允许将其用作参数,但我可以在每一步创建新的XmlDocuments,很好.
我的解决方案很简单,并且可以完成我希望它做的所有事情,但是FxCop似乎不允许解决方案显然更糟,更复杂.
这是我在程序代码中找到的:
pff::NAS::NAS( const NAS& p_Other )
: pff::MCCI(_T("NAS")) //<- ?
, m_strS(_T("JustAString")) //<- ?
, m_strK(_T("JustAString")) //<- ?
, m_strR(p_Other.GetmystrR()) //<- ?
, m_Swap()
{ }
Run Code Online (Sandbox Code Playgroud)
而我的问题是:
这些(//<- ?)标记的行是什么?我喜欢搜索它应该做什么,为什么做这个代码的人使用它.