.NET 4.x Сериализация разнородных объектов - C#
Формулировка задачи:
Доброго времени суток.
помогите разобраться, есть классы ни как не связанные между собой, необходимо их сериализовать в один файл например 1.dat и десериализовать по мере необходимости. Сериализация проходит успешно, десериализация тоже если только я десериализую в том же порядке в каком и сериализовал.
пример:
все отлично как только я убираю в рантайме получаю соответственно ошибку приведения типов.
Вопрос как правильно организовать сохранение этих объектов в одном файле. Или же каким другим способом можно хранить разные данные в одном бинарном файле, например, картинки, мелодии, данные - и соответственно считывать их.
[Serializable] public class C1 { public string N { get; set; } = "C1"; } [Serializable] public class C2 { public Image Im { get; set; } } public partial class Form1 : Form { public Form1() { InitializeComponent(); M1(); } private void M1() { C1 p1 = new C1(); C2 p3 = new C2(); p3.Im = Image.FromFile(@"C:\1.jpg"); BinaryFormatter formatter = new BinaryFormatter(); using (FileStream fs = new FileStream("1.dat", FileMode.OpenOrCreate)) { formatter.Serialize(fs, p1); formatter.Serialize(fs, p3); } } private void button1_Click(object sender, EventArgs e) { C2 im = new C2(); BinaryFormatter formatter1 = new BinaryFormatter(); using (FileStream fs = new FileStream("1.dat", FileMode.OpenOrCreate)) { label1.Text = ((C1) formatter1.Deserialize(fs)).N; im = (C2) formatter1.Deserialize(fs); pictureBox1.Image = im.Im; } } }
label1.Text = ((C1) formatter1.Deserialize(fs)).N;
Решение задачи: «.NET 4.x Сериализация разнородных объектов»
textual
Листинг программы
public class DataInfo { Type TypeData {get;set;} - тип хранимых данных (клас в который нужно делать сереализацию) uint Offset {get;set;} - смещение в сегменте данных uint Size{get;set;} - размер сереализованных данных }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д