Спасибо за статью, всем, кто не работал с сериализацией будет полезна
. От себя хотел бы добавить:
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);
}
}
Вроде все что хотел сказать
Еще раз спасибо за статью!