Еще разок про XML-сериализацию.
Еще разок про XML-сериализацию.
Имеем два класса:
[Serializable][XmlRoot(Namespace = "", ElementName = "Validators")]public class TValidators : HashSet<TValidator>{
}
[Serializable]public class TValidator{
}
При сериализации они порождают что-то вида:
<Validators><TValidator>...
</TValidator>...
</Validators>
Не устраивает момент связанный с названием элемента - хочу иметь просто <validator>.
Разумеется, менять имя класса нет никакого желания.
Когда последний раз смотрел сериализацию то не получалось что-либо поменять в дампе.
Варианты с - *Overrides - смотрел - либо не получается заменить элементНаме, либо приходится добавлять лишнюю информацию. Ни то, ни другое не устраивает.
Есть вообще возможность получить "правильный" дамп используя стандартный сериализер?
Из этого ничего не помогает?
http://www.ikriv.com/dev/dotnet/OverrideXml.shtml
https://msdn.microsoft.com/en-us/library/2baksw0z(v=vs.110...
Тогда можно еще сделать "ручками"
https://msdn.microsoft.com/en-us/library/system.xml.serial...
http://stackoverflow.com/questions/17236823/can-i-provide-...
У меня сейчас немного другая проблема.
Как упростить сериализацию для не public членов. Пока сильно не искал, но враппер городить не хочется.
Ну типа есть приватный список/словарь куда записываются данные через функцию с различными проверками и согласованиями.
Делать публичный доступ к этому списку, с комментарием "НЕ ПОЛЬЗОВАТЬ, для сериализации" совсем не хочется.
DataContract
Как раз сегодня мучил. Записать получилось. А вот читать зараза не хочет. Но я там namespace добавил. Иначе VB/C# будут проблемы
Но похоже с "автоматизацией" нужно завязывать. Любое переименование или добавление поля будет заваливать всё на корню. Хоть и с бинарной немного получше будет, но всё равно переименовать низзя. А то тут любят поля на немецком обзывать, устал уже боротся.