Код: Выделить всё
using System;
using System.Runtime.Serialization;
using System.Xml;
using System.IO;
using System.Collections.Generic;
[DataContract(Name = "Book", Namespace = "")]
public class Book
{
[DataMember] public string Title { get; set; }
[DataMember] public string Author { get; set; }
[DataMember] public int Year { get; set; }
}
[DataContract(Name = "Library", Namespace = "")]
public class Library
{
[DataMember] public string Name { get; set; }
[DataMember] public List Books { get; set; }
}
public class Program
{
static string xml = @"
Central Library
The Great Gatsby
F. Scott Fitzgerald
1925
To Kill a Mockingbird
Harper Lee
1960
";
static void Main(string[] args)
{
try
{
Library library = DeserializeLibrary(xml);
Console.WriteLine($"Deserialized Library: {library.Name}");
foreach (var book in library.Books)
{
Console.WriteLine($"Book: {book.Title} by {book.Author} ({book.Year})");
}
}
catch (Exception e)
{
Console.WriteLine($"Deserialization failed: {e.Message}");
Console.WriteLine($"Stack trace: {e.StackTrace}");
}
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
///
/// Deserializes the XML string into a Library object using DataContractSerializer
///
static Library DeserializeLibrary(string xmlString)
{
DataContractSerializer serializer = new DataContractSerializer(typeof(Library));
using (StringReader stringReader = new StringReader(xmlString))
using (XmlReader xmlReader = XmlReader.Create(stringReader))
{
return (Library)serializer.ReadObject(xmlReader);
}
}
}
Ошибка десериализации: ссылка на объект не установлена на экземпляр объекта
Трассировка стека: в Program.Main (System.String[] args) [0x0002a] в:0
Я постоянно сталкиваюсь с этой проблемой и не понимаю, почему. Я читал инструкцию за инструкцией, но никаких исправлений не было. Как мне заставить это правильно сериализовать этот список книг?
Он должен напечатать список книг
Подробнее здесь: https://stackoverflow.com/questions/791 ... -correctly