Страница: 1 |
С помощю класа serialisation можно сохранять обекты стандартных класов(например динамический массив), например: t.Add("My Object1") Dim saveFile As FileStream saveFile = File.Create("c:\objectSave.bin") Dim formatter As New BinaryFormatter() formatter.Serialize(saveFile, t) saveFile.Close() Все нормально, красиво сохраняет в файле c:\objectSave.bin обект класа ArrayList(). Но если мы попытаемся сохранить обект пользовательского класа (клас находится в том же проекте) то возникет исключение. Возможно я как то не так сделал клас? Как правильно? Клас: Public Private a_ As String a = a_ a_ = value End Сохранение пользовательского обекта: Dim t2.a = "MyValue" Dim saveFile As FileStream saveFile = File.Create("c:\objectSave2.bin") Dim formatter.Serialize(saveFile, t2) saveFile.Close() Ошибка(Исключение): An unhandled exception of type 'System.Runtime.Serialization.SerializationException' occurred in mscorlib.dll Additional information:
Спасибо действует. Но возникает непонятка типа: я должен сериализировать все(или почти все) класи которие я розрабативаю- ведь потом мне(или еще кому-нибуть) может захочется сохранить више указаним методом елементи этих класов? Или не сериализировать- но потом придется строить новий клас на основе несириализированого класа(через механизмы наследования) Для того, чтобы сохранить коллекцию в стримме нужно, как ты и сделал, установить атрибут Serializable. Например у класса HashTable он уже в базовом классе реализован так, что ни чего делать не надо.Класс ArrayList его не имеет, по этому Павел тебе и посоветовал установить этот атрибут. Какие интерфейсы имеют базовые классы легко вычисляются в ObjectBrowser - спускайся вниз по дереву класса покуда не дойдешь до IClonable, IDisposable, IDispozable и д т - енто они и есть. Да я то знаю - просто написал где можно разыскать и определить все это дело. Перечислил все кроме нужного - извините. Страница: 1 |
Вопрос: клас serialisation
Добавлено: 14.02.04 20:14
Автор вопроса: danser | ICQ: 299287824
The type Serialisation.Class1 in Assembly Serialisation,
Version=1.0.1473.25999, Culture=neutral, PublicKeyToken=null is not marked as serializable.
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #1
Добавлено: 15.02.04 04:02
Для того, чтобы класс мог быть сериализован, он должен быть помечен
атрибутов SerializableAttribute:
<Serializable()> Public Class Class
Номер ответа: 2
Автор ответа:
danser
ICQ: 299287824
Вопросов: 76
Ответов: 209
Профиль | | #2
Добавлено: 15.02.04 09:44
Номер ответа: 3
Автор ответа:
danser
ICQ: 299287824
Вопросов: 76
Ответов: 209
Профиль | | #3
Добавлено: 15.02.04 19:15
Номер ответа: 4
Автор ответа:
VladDor
Вопросов: 17
Ответов: 47
Профиль | | #4
Добавлено: 16.02.04 10:10
Номер ответа: 5
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #5
Добавлено: 16.02.04 10:45
VladDor, сериализуемые классы реализуют интерфейс ISerializable.
Остальные к делу не относятся.
Номер ответа: 6
Автор ответа:
VladDor
Вопросов: 17
Ответов: 47
Профиль | | #6
Добавлено: 16.02.04 11:34