Я хочу сохранить определенные классы, и поскольку xml-сериализация этого не сделает в моем случае, я сохраняю значения вручную в 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)
{
}
И вот на что пожаловался FxCop: «Измените элемент OtherclassSave2 (XmlNode)», чтобы он больше не отображал конкретный тип «XmlNode». Используйте IXPathNavigable для представления источников данных XML ».
А теперь мое замечательное решение:
public void Save ( ) { XmlDocument doc = новый XmlDocument (); XmlNode XmlNodeJob = doc.CreateElement («Работа»); doc.AppendChild (XmlNodeJob); OtherclassSave2 (XmlNodeJob.CreateNavigator ()); // Интерфейс из навигатора узла } public void OtherclassSave2 (IXPathNavigable nav) { XmlNode node = (XmlNode) (nav.CreateNavigator (). UnderlyingObject); }
Таким образом, я получаю свой узел другим методом, и FxCop доволен, но я действительно не вижу улучшения, и мне нужен узел, чтобы добавить в него что-то, а не что-то для чтения.
Я хотел изменить void SaveInThisNode (XmlNode) на XmlNode GetMeTheNode () , но для создания узлов через CreateElements мне нужен объект XmlDocument, который мне не разрешено использовать в качестве параметра, но я мог бы создавать новые XmlDocuments на каждом этапе, хорошо.
Мое решение было простым и отлично работало для всего, что я хотел, но FxCop, похоже, не допускает решений, которые явно не хуже и сложнее.