|
С# Средство разработки на платформе .Net |
08.06.2010, 23:27
|
#1
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Полу урок: Сериализация. Часть 1
Эта тема предназначена для размещения комментариев об этой статье. - АВТОМАТ
Любопытно.
Однако я предпочитаю делать осмысленый метод сохранения, а не писать всё в кучу.
__________________
Последний раз редактировалось ABTOMAT, 10.06.2010 в 13:55.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
08.06.2010, 23:36
|
#2
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Ответ: Полу урок: Сериализация. Часть 1
спасибо за статью !! ВИХБИ в деле !!
Хотя я тож предпочитаю сохранять в каком то осмысленом виде !! Любимый хмл !!
|
(Offline)
|
|
09.06.2010, 00:10
|
#3
|
быдло
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений (для 1,489 пользователей)
|
Ответ: Полу урок: Сериализация. Часть 1
Сообщение от SBJoker
Любопытно.
Однако я предпочитаю делать осмысленый метод сохранения, а не писать всё в кучу.
|
Согласен, не для каждого случая подойдёт, но у xml тоже есть свои преймущества, напрмиер востанновить полностью состояние обькта, не тратя на это сотню строк, также через DOM(!)(туплю) можно тоже легко работать с такой структурой. ПРи изменении какихто параметров в классе не менять код загрузчика.
|
(Offline)
|
|
09.06.2010, 00:30
|
#4
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Полу урок: Сериализация. Часть 1
Ну да, главное использовать инструмент по назначению. Жду ещё уроков!
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
09.06.2010, 01:48
|
#5
|
Unity/C# кодер
Регистрация: 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);
}
}
Вроде все что хотел сказать
Еще раз спасибо за статью!
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
|
|
10.06.2010, 03:47
|
#6
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Ответ: Полу урок. Сериализация. Часть 2. Десериализация и параметры.
класс !! Аж захотелось на с_шарпе чет пописать !!
|
(Offline)
|
|
10.06.2010, 03:50
|
#7
|
быдло
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений (для 1,489 пользователей)
|
Ответ: Полу урок. Сериализация. Часть 2. Десериализация и параметры.
я на это и рассчитываю xDD возможно(тоесть не исключено) я тайный вербовщик майкрософта)
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо Dream за это полезное сообщение:
|
|
10.06.2010, 03:53
|
#8
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Ответ: Полу урок. Сериализация. Часть 2. Десериализация и параметры.
Сообщение от Dream
я на это и рассчитываю xDD возможно(тоесть не исключено) я тайный вербовщик майкрософта)
|
Ога !! Если бы счас не 2 часа ночи было, точно бы сел чет писать !!
|
(Offline)
|
|
10.06.2010, 18:53
|
#9
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Комментарии к статье "Сериализация"
Отличная статья, в дополнение пара ссылок для тех, кому потребуется изучить данную тему подробнее:
1. Класс XmlSerializer
2. Пространство имен System.Xml.Serialization
Кроме Xml сериализации существует еще и бинарная сериализация, если кому интересно, то изучаем класс BinaryFormatter
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
|
|
23.12.2012, 02:19
|
#10
|
Бывалый
Регистрация: 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
|
быдло
Регистрация: 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)
|
|
Сообщение было полезно следующим пользователям:
|
|
23.12.2012, 16:18
|
#12
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Комментарии к статье "Сериализация"
Спасибо. Вот еще интересная статья про сериализацию и полиморфизм http://www.tdoc.ru/c/dotnet/net-fram...-f2-page4.html
Там еще пара способов.
1) С помощью аннотации XmlInclude прописать базовому классу список всех наследников, что не есть гуд.
2) Классом XmlAttributes можно при сериализации задать список базовых классов. Это уже можно сделать в ран тайме, не зная списка всех потомков.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:13.
|