Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > С#

С# Средство разработки на платформе .Net

Ответ
 
Опции темы
Старый 08.06.2010, 23:27   #1
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Полу урок: Сериализация. Часть 1

Эта тема предназначена для размещения комментариев об этой статье. - АВТОМАТ

Любопытно.
Однако я предпочитаю делать осмысленый метод сохранения, а не писать всё в кучу.
__________________

Последний раз редактировалось ABTOMAT, 10.06.2010 в 13:55.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
h1dd3n (09.06.2010)
Старый 08.06.2010, 23:36   #2
IGR
Blitz's Shame !!
 
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений
(для 2,013 пользователей)
Ответ: Полу урок: Сериализация. Часть 1

спасибо за статью !! ВИХБИ в деле !!

Хотя я тож предпочитаю сохранять в каком то осмысленом виде !! Любимый хмл !!
(Offline)
 
Ответить с цитированием
Старый 09.06.2010, 00:10   #3
Dream
быдло
 
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений
(для 1,489 пользователей)
Ответ: Полу урок: Сериализация. Часть 1

Сообщение от SBJoker Посмотреть сообщение
Любопытно.
Однако я предпочитаю делать осмысленый метод сохранения, а не писать всё в кучу.
Согласен, не для каждого случая подойдёт, но у xml тоже есть свои преймущества, напрмиер востанновить полностью состояние обькта, не тратя на это сотню строк, также через DOM(!)(туплю) можно тоже легко работать с такой структурой. ПРи изменении какихто параметров в классе не менять код загрузчика.
(Offline)
 
Ответить с цитированием
Старый 09.06.2010, 00:30   #4
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Полу урок: Сериализация. Часть 1

Ну да, главное использовать инструмент по назначению. Жду ещё уроков!
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Dream (09.06.2010)
Старый 09.06.2010, 01:48   #5
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Полу урок: Сериализация. Часть 1

Спасибо за статью, всем, кто не работал с сериализацией будет полезна . От себя хотел бы добавить:

1. В данном примере используется конструктор XmlSerializer(type). В МСДН по этому поводу написано:

Динамически сгенерированные сборки.
Для повышения производительности инфраструктура сериализации XML динамически генерирует сборки для сериализации и десериализации указанных типов. Инфраструктура обнаруживает и повторно использует данные сборки. Такое поведение происходит только при использовании следующих конструкторов:

XmlSerializer.XmlSerializer(Type)

XmlSerializer.XmlSerializer(Type, String)

При использовании любого другого конструктора генерируется несколько версий одной сборки, которые никогда не выгружаются, что приводит к недостаточности памяти и низкому уровню производительности. Самым простым решением является использование ранее упомянутых двух конструкторов. В противном случае необходимо кэшировать сборки в Hashtable, как указано в следующем примере.
Следовательно механизм с хэш таблицей, приведенный тут излишний. Но показать его необходимость в других случаях - правильное решение.

2. Функция WriteEntity на мой взгляд дублирует информацию в памяти аш два раза. Ее можно записать на много проще и оптимальнее:
        public static void WriteEntity(object obj, string fileFullPath)
        {
            XmlSerializer sr = GetSerializer(obj.GetType());
            using (FileStream fs = File.Create(fileFullPath))
            {
                sr.Serialize(fs, obj);
            }
        }
Вроде все что хотел сказать
Еще раз спасибо за статью!
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
Dream (09.06.2010), Randomize (09.06.2010)
Старый 10.06.2010, 03:47   #6
IGR
Blitz's Shame !!
 
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений
(для 2,013 пользователей)
Ответ: Полу урок. Сериализация. Часть 2. Десериализация и параметры.

класс !! Аж захотелось на с_шарпе чет пописать !!
(Offline)
 
Ответить с цитированием
Старый 10.06.2010, 03:50   #7
Dream
быдло
 
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений
(для 1,489 пользователей)
Ответ: Полу урок. Сериализация. Часть 2. Десериализация и параметры.

я на это и рассчитываю xDD возможно(тоесть не исключено) я тайный вербовщик майкрософта)
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Dream за это полезное сообщение:
Arton (10.06.2010), IGR (10.06.2010), Nex (10.06.2010)
Старый 10.06.2010, 03:53   #8
IGR
Blitz's Shame !!
 
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений
(для 2,013 пользователей)
Ответ: Полу урок. Сериализация. Часть 2. Десериализация и параметры.

Сообщение от Dream Посмотреть сообщение
я на это и рассчитываю xDD возможно(тоесть не исключено) я тайный вербовщик майкрософта)
Ога !! Если бы счас не 2 часа ночи было, точно бы сел чет писать !!
(Offline)
 
Ответить с цитированием
Старый 10.06.2010, 18:53   #9
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Комментарии к статье "Сериализация"

Отличная статья, в дополнение пара ссылок для тех, кому потребуется изучить данную тему подробнее:

1. Класс XmlSerializer
2. Пространство имен System.Xml.Serialization


Кроме Xml сериализации существует еще и бинарная сериализация, если кому интересно, то изучаем класс BinaryFormatter
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
den (19.01.2011), Dream (10.06.2010), ffinder (10.06.2010)
Старый 23.12.2012, 02:19   #10
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений
(для 357 пользователей)
Ответ: Комментарии к статье "Сериализация"

Почему такой список нельзя сохранить?
List<Base> list = new List<Base>();
list.Add( new A(1) );
list.Add( new B(2) );
list.Add( new Base() );
Пишет, что A не является примитивом? A и B являются потомками Base.
(Offline)
 
Ответить с цитированием
Старый 23.12.2012, 04:51   #11
Dream
быдло
 
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений
(для 1,489 пользователей)
Ответ: Комментарии к статье "Сериализация"

Сообщение от WISHMASTER35 Посмотреть сообщение
Почему такой список нельзя сохранить?
List<Base> list = new List<Base>();
list.Add( new A(1) );
list.Add( new B(2) );
list.Add( new Base() );
Пишет, что A не является примитивом? A и B являются потомками Base.
читай последний пример внимательно http://forum.boolean.name/showpost.p...02&postcount=3
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
WISHMASTER35 (23.12.2012)
Старый 23.12.2012, 16:18   #12
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений
(для 357 пользователей)
Ответ: Комментарии к статье "Сериализация"

Спасибо. Вот еще интересная статья про сериализацию и полиморфизм http://www.tdoc.ru/c/dotnet/net-fram...-f2-page4.html
Там еще пара способов.
1) С помощью аннотации XmlInclude прописать базовому классу список всех наследников, что не есть гуд.
2) Классом XmlAttributes можно при сериализации задать список базовых классов. Это уже можно сделать в ран тайме, не зная списка всех потомков.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 01:20.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com