Жалоба FxCop: открытые конкретные типы xml и плохое улучшение

Я хочу сохранить определенные классы, и поскольку 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, похоже, не допускает решений, которые явно не хуже и сложнее.

6
задан Otterprinz 8 February 2012 в 09:30
поделиться