Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
107 / 13 / 7
Регистрация: 06.07.2013
Сообщений: 268

Как сохранить в файл не сериализуемый объект?

06.01.2018, 18:03. Показов 2973. Ответов 8

Студворк — интернет-сервис помощи студентам
Получаю из сторонней библиотеки объект который хотел сохранять между сессиями при помощи бинарной сериализации, но тип объекта не помечен как сериализуемый. Есть какая-то возможность хранить этот объект между сессиями?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.01.2018, 18:03
Ответы с готовыми решениями:

Как пометить объект как сериализуемый
Здравствуйте, как пометить тип "System.Windows.Controls.TreeView" как сериализуемый? Просто не много не понимаю как это сделать... нужно...

Файл: Сохранить объект класса в файл в виде двоичного кода и восстановить, с выводом в консоль
Сохранить объект класса в файл в виде двоичного кода и восстановить, с выводом в консоль.

Сохранить объект класса в файл
Товагищи! Не могу сохранить экземпляр с переменной AnsiString в файл. Куда копать? спсб

8
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
06.01.2018, 18:20
Лучший ответ Сообщение было отмечено ATop как решение

Решение

Цитата Сообщение от ATop Посмотреть сообщение
Есть какая-то возможность хранить этот объект между сессиями?
Могу предложить (как вариант) написать свой класс-обертку, с такими же свойствами, заполнить его свойства на основе полученного объекта, сериализовать, десериализовать и так далее. Можно в нем даже операторы преобразования написать свои, FromXXX/ToXXX.
1
107 / 13 / 7
Регистрация: 06.07.2013
Сообщений: 268
06.01.2018, 18:26  [ТС]
Спасибо, так и сделаю.
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
06.01.2018, 18:26
Цитата Сообщение от ATop Посмотреть сообщение
при помощи бинарной сериализации
Почему именно бинарной?
0
107 / 13 / 7
Регистрация: 06.07.2013
Сообщений: 268
06.01.2018, 18:34  [ТС]
Цитата Сообщение от Woldemar89 Посмотреть сообщение
Почему именно бинарной?
Мне не нужно будит читать этот файл из других программ, и бинарная кажется просто быстрее. И еще читал у Троелсена что бинарная сериализация хранит приватные поля объекта, но это не точно.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
06.01.2018, 18:38
Цитата Сообщение от ATop Посмотреть сообщение
бинарная кажется просто быстрее
Ну так-то да, бинарная естественно будет работать быстрее (не нужно преобразование и разбор).
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
06.01.2018, 18:43
Лучший ответ Сообщение было отмечено ATop как решение

Решение

В идеале для вас да - скорее, бинарная.
Однако, если объект не Ваш, да еще и содержит кучу пропертей и прочего, можно кастануть такое проклятие.
(ну это так - просто к слову)

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class MyContractResolver : Newtonsoft.Json.Serialization.DefaultContractResolver
{
    protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
    {
        var props = type.GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)
                        .Select(p => base.CreateProperty(p, memberSerialization))
                    .Union(type.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)
                               .Select(f => base.CreateProperty(f, memberSerialization)))
                    .ToList();
        props.ForEach(p => { p.Writable = true; p.Readable = true; });
        return props;
    }
}
 
var settings = new JsonSerializerSettings() { ContractResolver = new MyContractResolver() };
var json = JsonConvert.SerializeObject(obj, settings);
1
107 / 13 / 7
Регистрация: 06.07.2013
Сообщений: 268
06.01.2018, 18:55  [ТС]
Цитата Сообщение от Woldemar89 Посмотреть сообщение
можно кастануть такое проклятие
В рот мне ноги! Девид Блейн что ты творишь?
Работает, оставлю ваш вариант, но мне кажется создать класс обертку будит более верным решением.
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
06.01.2018, 18:59
Цитата Сообщение от ATop Посмотреть сообщение
Работает, оставлю ваш вариант
Ну вот, научил плохому...
Цитата Сообщение от ATop Посмотреть сообщение
но мне кажется создать класс обертку будит более верным решением.
Разумеется, надеюсь исходный код класса имеется или рефлекторится в крайнем случае..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.01.2018, 18:59
Помогаю со студенческими работами здесь

Сохранить объект в текстовый файл без сериализации
подскажите пожалуйста как сохранить объект в текстовый файл без сериализации?

Сохранить сложный объект в файл и потом загрузить его
Приветствую всех. Имеется примерно такой код: class Array { ............ double* Cols; ........... }

Сохранить объект как...?
как можно сделать, кликая по ссылке указывающей на файл на сервере, чтоб всегда открывалось окно - загрузка файла и открыть из текущего...

Как сохранить объект на диске ?
All как сохранить объект на диске ? Имеется ввиду следующее. У меня есть объект типа Collection с заполненными данными. Имеется ли...

Как сохранить объект Blob в кодировке ANSI?
Добрый день, суть проблемы в следующем: есть PHP -скрипт, генерирующий PDF-документ при помощи библиотеки FPDF по POST-запросу через AJAX....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru