Не работает XmlSerializer - C#
Формулировка задачи:
Создаю вот такой вот класс.
Потом в теле программы вызываю
И пошло движение. Только это движение заканчивается ошибкой переполнения стека. Файл, в который сериализуется класс, создается, но там 0 байт.
На отладке метод WriteXml начинает работать циклом. Почему - не знаю.
[Serializable] public class ECU:IXmlSerializable { public string SourceByte { get { return Convert.ToString(_sourceByte, 16); } set { _sourceByte = byte.Parse(value, System.Globalization.NumberStyles.AllowHexSpecifier); } } public string TargetByte { get { return Convert.ToString(_targetByte, 16); } set { _targetByte = byte.Parse(value, System.Globalization.NumberStyles.AllowHexSpecifier); } } [NonSerialized] protected byte _targetByte = 0x00; protected byte _sourceByte = 0x00; public ECU() { } public System.Xml.Schema.XmlSchema GetSchema() { return null; } public void ReadXml(XmlReader reader) { XmlSerializer xml = new XmlSerializer(typeof(ECU)); xml.Deserialize(reader); } public void WriteXml(XmlWriter writer) { XmlSerializer xml = new XmlSerializer(typeof(ECU)); xml.Serialize(writer, this); writer.Close(); } }
XmlWriter xml = XmlWriter.Create(FileName); ecu.WriteXml(xml);
Решение задачи: «Не работает XmlSerializer»
textual
Листинг программы
//атрибуты не нужны т.к. все пишется ручками protected byte _targetByte = 0x00; protected byte _sourceByte = 0x11; public void ReadXml(XmlReader reader) { reader.MoveToAttribute("targetByte"); if(reader.HasValue) _targetByte = byte.Parse(reader.Value); reader.MoveToAttribute("sourceByte"); if (reader.HasValue) _sourceByte = byte.Parse(reader.Value); } public void WriteXml(XmlWriter writer) { writer.WriteAttributeString("targetByte", _targetByte.ToString()); writer.WriteAttributeString("sourceByte", _sourceByte.ToString()); } public static void WriteReadTest() { var fs = new MemoryStream(); new XmlSerializer(typeof(ECU)).Serialize(fs, new ECU()); fs.Position = 0; var ecu = new XmlSerializer(typeof (ECU)).Deserialize(fs); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д