Я использую XmlSerializer в C# для сериализации экземпляра класса в xml. По умолчанию, если я сериализовать экземпляр следующего класса:Настроить xml, сгенерированный для экземпляров C#
public class XmlTest
{
public bool b1;
}
поле BOOL представлен как <b1>false</b1>
У меня есть конкретное требование, что значение BOOL полей можно представить в виде элементов, как в <false>
и <true>
вместо текстового контента , У меня одинаковые требования для полей enum.
Я попытался использовать атрибуты, которые управляют сериализацией XML, но не смог найти тот, который соответствует моим требованиям. Я довольно новичок в C# и задавался вопросом, как наилучшим образом достичь этого.
Хм, этот ответ выглядит он ближе к «правильный способ сделать это», чем моя - на самом деле шахта может просто сбросить текст, «истина/ложь», а не создать новый элемент – darkpbj
Это кажется хорошим. Но я думаю, что не указал свой полный вариант использования. Я планирую автоматически генерировать генерации классов C#, экземпляры которых затем могут быть сериализованы в xml. Один из вариантов - иметь метод сериализации в каждом сгенерированном классе и индивидуально обрабатывать каждое поле этого класса. Это звучит не очень хорошо. Лучше, и мой предпочтительный подход будет состоять в том, чтобы иметь общий метод Serialize, который может принимать любой экземпляр в качестве параметра. Затем он может использовать отражение для получения полей класса и в зависимости от их типов, сериализуйте их соответствующим образом. Это звучит разумно? – Paani
Если вы автоматически генерируете классы, вы также сможете автоматически генерировать код сериализации. Я думаю, вы найдете LINQ для XML, чтобы быть хорошо подходящим для этого. –