Но в некоторых случаях этот контроль недоступен. Вот три примера.
Случаи A и B — это то, что обычно работает (но я не хочу их использовать).
Случай C также работает, но с потерей контроля над XML. имена узлов. (И я хочу использовать это с контролем над именами узлов).
Примечание. Проблему в C можно избежать, реализовав IXmlSerializable, но это много дополнительной работы для решения небольшой проблемы.
Например A:
Код: Выделить всё
[XmlRoot(ElementName = "root")]
public class MyClass
{
[XmlArray("my_names_list"), XmlArrayItem(typeof(string), ElementName = "my_name")]
public List MyNames { get; set; } = new List();
}
Код: Выделить всё
first value
second value
Код: Выделить всё
[XmlRoot(ElementName = "root")]
public class MyClass
{
[XmlElement(ElementName = "my_name")]
public List MyNames { get; set; } = new List();
}
Код: Выделить всё
first value
second value
Код: Выделить всё
[XmlRoot(ElementName = "root")]
public class MyClass : List { }
Код: Выделить всё
first value
second value
Для потоковой передачи я предпочитаю A в большинстве случаев, а B это то, что я иногда предпочитаю.
В примере кода C нет члена класса для списка, класс наследуется от списка, и это то, что я хочу использовать.
В этом примере строка в List не представляет собой такой уж большой проблемы. Но List раздражает больше, или мне придется пойти на уступки в своем стиле кодирования, или мне придется принять результаты потоковой передачи XML. Или я могу попытаться найти способ контролировать/направлять синтаксический анализатор XML в С#. (Я знаю, что могу сделать это с помощью IXmlSerializable, но для одного изменения имени требуется много дополнительной работы.)
Для потоковой передачи C я потерял контроль над именем узла элемента списка. . Что бы я ни пытался изменить, компилятор ничего из этого не принимает.
Как я могу использовать код из примера C и получить результаты потоковой передачи из примера B без использования IXmlSerializable ?
Любые советы приветствуются.
Подробнее здесь: https://stackoverflow.com/questions/790 ... ific-cases
Мобильная версия