Xml сериализация Hashtable

aleks058

Возникла следующая задача:
необходимо сериализовать Hashtable в Xml.
Hashtable реализует интерфейс ISerializable, но при этом XmlSerializer отказывается ее сериализовать. Написано, что это из-за того, что Hashtable реализует ко всему прочему еще и IDictionary.
Я абсолютно не понимаю, в чем заключается проблема для XmlSerializer, но она явно есть
Что можно сделать?

FRider

Можн написать вручную сохранение на диск.
А можно воспользоваться сериализацией в soap.

Helga87

Костя, не делай так, как сказал Колян.

FRider

Чушь, какие у тебя ключи?

Helga87

У меня ключей нет

Dasar

ISerializable никакого отношения к XmlSerializer-у не имеет
XmlSerializer не умеет сериализовывать Hashtable, и в частности IDictionary - о чем и сообщает.
ps
Соответственно надо или писать свою сериализацию Hashtable (например, через вспомогательный массив либо посмотреть в инете.

aleks058

Че-то я забыл уже, как сказал Колян. И говорил ли он мне вообще что-то на эту тему...

aleks058

На самом деле, я решил забить на стандартный механизм сериализации, поскольку он накладывает слишком большие ограничения.
Пользваться я им хотел для загрузки настроек программы из файла.
Минусов куча:
1. Сериализует/десериализует только публичные поля и свойства.
2. Для internal классов тоже не подходит.
3. (самое отстойное, наверное) Не обрабатывает readonly поля. Вроде че-то можно там с ISerializable намутить, конструктор специальный забабахать, но у меня не заработало все равно.
4. Добавляет в заголовок длииинное описание namespace-ов так, что потом файл конфигурации читать противно.
5. Сосет в отношении Hashtable. Это тоже никуда не годится. Особенно если учесть, что в MSDN написано, что отчасти это из-за того, что на реализацию не хватило времени. Суки ленивые!
6. Задалбывает помечать поля, которые я хочу сделать атрибутами. А атрибутами я хочу сделать все, что не имеет вложенных элементов (строки, int, double...)
Теперь я загружаю объекты путем передачи в конструктор параметра XmlElement и вполне этим доволен.
Все могу контролировать.
Кода мало.
Все подряд public-ами делать не надо.
Благодать!

aleks058

О!
Кажется, я понимаю, о чем ты...
Значит, в предыдущем посте я накосячил.
Ну и ладно!
Оставить комментарий
Имя или ник:
Комментарий: