Вот мой список классов: -Как сериализовать класс со свойствами, объявленными как интерфейсы?
public interface IUniquelyIdentifiable
{
string AuthorName { get; set; }
}
public interface IUniquelyIdentifiable1
{
string CategoryName { get; set; }
}
public interface IUniquelyIdentifiable2
{
string PublisherName { get; set; }
}
[Serializable]
public class Book
{
//BookId, Category, Title, Author, Publisher, Description, Price, ISBN, PublicationDate.
public IUniquelyIdentifiable Author { get; set; }
public IUniquelyIdentifiable1 Category { get; set; }
public IUniquelyIdentifiable2 Publisher { get; set; }
public int BookId { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public int ISBN { get; set; }
public int Price { get; set; }
public string PublicationDate { get; set; }
}
[Serializable]
class Author : IUniquelyIdentifiable
{
//AuthorId, AuthorName, DateOfBirth, State, City, Phone
public int AuthorId { get; set; }
public string AuthorName { get; set; }
public string DateOfBirth { get; set; }
public string State { get; set; }
public string City { get; set; }
public int Phone { get; set; }
}
[Serializable]
class Category : IUniquelyIdentifiable1
{
//CategoryId, CategoryName, Description
public int CategoryId { get; set; }
public string CategoryName { get; set; }
public string Description { get; set; }
}
[Serializable]
class Publisher : IUniquelyIdentifiable2
{
//PublisherId, PublisherName, DateOfBirth, State, City, Phone.
public int PublisherId { get; set; }
public string PublisherName { get; set; }
public string DateOfBirth { get; set; }
public string State { get; set; }
public string City { get; set; }
public int Phone { get; set; }
}
ниже метод, который пытается сериализовать объекты, созданные из вышеперечисленных классов: -
public static void XmlSerializeMyObject()
{
XmlSerializer writer = new XmlSerializer(typeof(Book));
//overview.title = "Serialization Overview";
var path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "//SerializationOverview.xml";
FileStream file = File.Create(path);
writer.Serialize(file,bookList);
file.Close();
}
Как вы можете видеть, что я даже использовал атрибут [Serializable] , но все еще получаю сообщение об ошибке, которое я не могу использовать для сериализации интерфейсов.
Также я просто хочу сериализовать объекты данных классов, а не интерфейсы.
Возможный дубликат [Сериализация интерфейсов] (http://stackoverflow.com/questions/4659248/serializing-interfaces) –
Нет, это не так. Этот вопрос не закрыт. У него даже нет правильного ответа. Пожалуйста, проверьте правильность, прежде чем пометить любые вопросы. –
попробуйте с помощью сериализатора datacontract https://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractserializer.aspx – Thorarins