Лучший отвечающий
Проблема с сериалиацией объекта

Вопрос
-
Как сериализовать (записать в фаил) объект с переменной , представляющей из себя двухмерный массив,когда пробую это сделать выдает слудующее : "Возникла ошибка при отражении типа "ConsoleApplication1.Test[]"".
Вот текст программы :using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
using System.IO;
namespace ConsoleApplication1
{
[Serializable()]
public class Test
{
public string Name;
public int Age;
public int[,] p = new int[2,2];
public Test() { }
public Test(string name, int age, int p0,int p1,int p2,int p3)
{
Name = name;
Age = age;
p[0,0] = p0;
p[0,1] = p1;
p[1,0] = p2;
p[1,1] = p3;
}
}
class Program
{
static void Main(string[] args)
{
Test[] a = new Test[2];
a[0] = new Test("Вася",19,10,9,8,7);
a[1] = new Test("Ваня",17,7,8,9,10);
//Создадим обьект класса XmlSerializer, для выполнения сериализации обьекта(в скобачках тип сеарилизованых данных)
XmlSerializer writerRw = new XmlSerializer(typeof(Test[]));
//создадим обьект класса StreamWriter, для того, что бы записать в файл данные
StreamWriter fileRw = new StreamWriter("C:\\test.dt");
//Выполним сериализацию
writerRw.Serialize(fileRw, a);
//кеп)) закроем файл
fileRw.Close();
}
}
}- Изменен тип Ефимчук Иван 6 мая 2013 г. 10:53
- Изменен тип YatajgaModerator 6 мая 2013 г. 13:50
6 мая 2013 г. 10:52
Ответы
-
XmlSerializer не поддерживает многомерные массивы. Перепишите код на использование jagged arrays - [][]
- Предложено в качестве ответа YatajgaModerator 6 мая 2013 г. 13:55
- Помечено в качестве ответа YatajgaModerator 6 мая 2013 г. 15:56
6 мая 2013 г. 11:05 -
static void Main(string[] args) { var a = new Test[2]; a[0] = new Test("Вася", 19, 10, 9, 8, 7); a[1] = new Test("Ваня", 17, 7, 8, 9, 10); var binaryFormatter = new BinaryFormatter(); using (Stream stream = new FileStream("C:\\test.dt", FileMode.OpenOrCreate)) { binaryFormatter.Serialize(stream, a); } using (Stream stream = new FileStream("C:\\test.dt", FileMode.Open)) { var b = binaryFormatter.Deserialize(stream) as Test[]; foreach (var test in b) { Console.WriteLine(test.Name); } } }
- Предложено в качестве ответа YatajgaModerator 6 мая 2013 г. 13:55
- Помечено в качестве ответа YatajgaModerator 6 мая 2013 г. 15:56
6 мая 2013 г. 13:46
Все ответы
-
XmlSerializer не поддерживает многомерные массивы. Перепишите код на использование jagged arrays - [][]
- Предложено в качестве ответа YatajgaModerator 6 мая 2013 г. 13:55
- Помечено в качестве ответа YatajgaModerator 6 мая 2013 г. 15:56
6 мая 2013 г. 11:05 -
Или используйте BinaryFormatter:
static void Main(string[] args) { var a = new Test[2]; a[0] = new Test("Вася", 19, 10, 9, 8, 7); a[1] = new Test("Ваня", 17, 7, 8, 9, 10); var binaryFormatter = new BinaryFormatter(); using (Stream stream = new FileStream("C:\\test.dt", FileMode.OpenOrCreate)) { binaryFormatter.Serialize(stream, a); } }
6 мая 2013 г. 11:21 -
тогда как считать такие данные...???
6 мая 2013 г. 13:40 -
static void Main(string[] args) { var a = new Test[2]; a[0] = new Test("Вася", 19, 10, 9, 8, 7); a[1] = new Test("Ваня", 17, 7, 8, 9, 10); var binaryFormatter = new BinaryFormatter(); using (Stream stream = new FileStream("C:\\test.dt", FileMode.OpenOrCreate)) { binaryFormatter.Serialize(stream, a); } using (Stream stream = new FileStream("C:\\test.dt", FileMode.Open)) { var b = binaryFormatter.Deserialize(stream) as Test[]; foreach (var test in b) { Console.WriteLine(test.Name); } } }
- Предложено в качестве ответа YatajgaModerator 6 мая 2013 г. 13:55
- Помечено в качестве ответа YatajgaModerator 6 мая 2013 г. 15:56
6 мая 2013 г. 13:46 -
спасибо большое!!!6 мая 2013 г. 15:36
-
Уважаемый пользователь, не забывайте отмечать ответ(ы) на Ваш вопрос.
6 мая 2013 г. 15:56Модератор