Свернуть свойства с разделом CData - Сериализация XML C #
Мне нужно сериализовать мой объект таким образом, чтобы свойства, которые я хочу, обернулись вокруг разделов CData. Я надеялся, что смогу сделать что-то вроде этого:
public class Order
{
[JsonProperty]
public int OrderId { get; set; }
[JsonProperty]
public string Name { get; set; }
[JsonProperty]
public int Type { get; set; }
[JsonProperty]
public decimal Amount { get; set; }
[JsonProperty]
public DateTime Date { get; set; }
[DataMember]
[JsonProperty]
**[WrapCData]**
public List<Option> ListB { get; set; }
[DataMember]
public List<string> ListC { get; set; }
**[WrapCData]**
public Product Product { get; set; }
}
Есть ли какой-либо атрибут или реализация, которая могла бы обернуть мои специфические свойства в раздел CData? Существующие ответы на StackOverflow предлагают возиться с самим объектом (классом). Это будет очень грязно.
В следующей теме:Как вы сериализуете строку как CDATA, используя XmlSerializer?
Ответ Филиппа предлагает создать другое свойство и соответствующее ему свойство CData. Однако свойство является строкой. CreateCDataSection () также принимает строку. Мне нужно обернуть свои пользовательские объекты / списки вокруг CDataSections. Как я могу это сделать? Любая помощь будет оценена. Благодарю.
Пример XML для вышеуказанного класса заказа:
<Order xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<OrderId>2</OrderId>
<Name>Some Name</Name>
<Type>1</Type>
<Amount>100</Amount>
<Date>2015-12-07T15:10:49.6031106+05:00</Date>
<![CDATA[
<ListB>
<Option>
<OptionValue>OptionValue1</OptionValue>
<OptionName>Option1</OptionName>
</Option>
<Option>
<OptionValue>OptionValue2</OptionValue>
<OptionName>Option2</OptionName>
</Option>
</ListB>
]]>
<ListC>
<string>ListItem1</string>
<string>ListItem2</string>
</ListC>
<![CDATA[
<Product>
<ProductId>1</ProductId>
<Name>ProductName</Name>
<Type>Product Type</Type>
</Product>
]]>
</Order>