Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Еще разок про XML-сериализацию.​

318  
Murr патриот25.04.17 13:09
Murr
NEW 25.04.17 13:09 

Еще разок про XML-сериализацию.


Имеем два класса:


[Serializable]
[XmlRoot(Namespace = "", ElementName = "Validators")]
public class TValidators : HashSet<TValidator>

{
}

[Serializable]

public class TValidator

{
}


При сериализации они порождают что-то вида:

<Validators>
<TValidator>

...

</TValidator>

...

</Validators>

Не устраивает момент связанный с названием элемента - хочу иметь просто <validator>.

Разумеется, менять имя класса нет никакого желания.


Когда последний раз смотрел сериализацию то не получалось что-либо поменять в дампе.

Варианты с - *Overrides - смотрел - либо не получается заменить элементНаме, либо приходится добавлять лишнюю информацию. Ни то, ни другое не устраивает.


Есть вообще возможность получить "правильный" дамп используя стандартный сериализер?

#1 
AlexNek патриот25.04.17 23:06
AlexNek
AlexNek патриот25.04.17 23:26
AlexNek
NEW 25.04.17 23:26 
в ответ AlexNek 25.04.17 23:06

У меня сейчас немного другая проблема.

Как упростить сериализацию для не public членов. Пока сильно не искал, но враппер городить не хочется.


Ну типа есть приватный список/словарь куда записываются данные через функцию с различными проверками и согласованиями.

Делать публичный доступ к этому списку, с комментарием "НЕ ПОЛЬЗОВАТЬ, для сериализации" совсем не хочется.

#3 
Murr патриот26.04.17 02:00
Murr
NEW 26.04.17 02:00 
в ответ AlexNek 25.04.17 23:26

Как упростить сериализацию для не public членов.

------

SoapSerializer

должен уметь делать. Если не достаточно то еще есть

BinarySerializer

но там уже не хмл...

#4 
Murr патриот26.04.17 02:02
Murr
NEW 26.04.17 02:02 
в ответ AlexNek 25.04.17 23:06

Из этого ничего не помогает?

-----

Там проблема в шаблонном классе.

#5 
Программист коренной житель26.04.17 10:12
NEW 26.04.17 10:12 
в ответ Murr 26.04.17 02:00
Как упростить сериализацию для не public членов.

DataContract

#6 
AlexNek патриот26.04.17 23:34
AlexNek
NEW 26.04.17 23:34 
в ответ Программист 26.04.17 10:12
DataContract

Как раз сегодня мучил. Записать получилось. А вот читать зараза не хочет. Но я там namespace добавил. Иначе VB/C# будут проблемы


Но похоже с "автоматизацией" нужно завязывать. Любое переименование или добавление поля будет заваливать всё на корню. Хоть и с бинарной немного получше будет, но всё равно переименовать низзя. А то тут любят поля на немецком обзывать, устал уже боротся.

#7 
AlexNek патриот26.04.17 23:36
AlexNek
NEW 26.04.17 23:36 
в ответ Murr 26.04.17 02:02
там проблема в шаблонном классе.

В смысле "генерик"?

Так понятно, что любой класс ты не запишешь и не прочитаешь.


У меня просто иерархия и то проблемы.

#8