Десериализация string в List<string>

155
29 сентября 2017, 15:35

Вопрос заключается в следующем 1) Есть класс PivotBlock, который содержит среди всех полей поле ColumnField

public class PivotBlock
{
    public string ColumnField { get; set; }
}

2)Происходит сериализация и десериализация этого класса с помощью XmlSerializer. Все отлично

3) Дальше меняется спустя время поле ColumnField и класс приобретает вид

public class PivotBlock
{
    public List<string> ColumnField { get; set; }
}

Но со стороны клиента приходит старый xml файл, который содержит только одно поле

<ColumnField>ProductName</ColumnField>

4)Проблема заключается в том, что десериализатор ждет это, так поле изменилось на список

<ColumnField>
    <string>ProductName</string>
</ColumnField>

5)Вопрос: как можно скормить десиализатору старый xml файл с этим полем?

<ColumnField>ProductName</ColumnField>

Может установить аттрибут на это поле в классе или еще что-то? Я понимаю, что можно разобрать xml файл, найти эти значение по тэгам и тд и тп, но хочется обойтись малой кровью

Answer 1
public class PivotBlock
{
    [XmlElement("ColumnField")]
    public List<string> ColumnField { get; set; }
}

В таком виде должно работать.

READ ALSO
Не выполняется второй запрос C# + xNet

Не выполняется второй запрос C# + xNet

Использую библиотеку xNet

289
C# - непонятно, как работает подсчет количества элементов коллекции с помощью Linq

C# - непонятно, как работает подсчет количества элементов коллекции с помощью Linq

Здесь с помощью лямда выражений происходит поиск количества элементов в спискеНо я не понимаю как это работает

326
Сброс куки Forms authentication

Сброс куки Forms authentication

Есть приложение, в котором нужно кое-что подчистить перед тем, как куки Forms Authentication истекутЯ пробовал переопределять методы AuthorizeAttribute, но поле...

190