Значения коллекции строк дублируются при сохранении и перезагрузке из XML - PullRequest
0 голосов
/ 11 августа 2011

Ну, у меня возникла очень странная проблема: когда я заполняю коллекцию строк в сетке свойств значением, а затем сохраняю его в XML, когда я перезагружаю XML и проверяю, что коллекция строк обнаруживает, что значения дублируются.1002 * И это происходит каждый раз, когда я сохраняю и перезагружаюсь.

Ответы [ 2 ]

0 голосов
/ 13 августа 2011

вот как проблема решается: в строке 2: когда я сделал _AttributesCustomList частным, при загрузке XML коллекция строк не дублируется ... Я действительно не знаю почему, но в любом случае проблема решена

    [XmlElement("AttributesCustomList")]
    public list<string> _AttributesCustomList;
    [CategoryAttribute("Custom"), ReadOnly(false),
    Description("This property is customised to put new attributes")]
    //[RefreshProperties(RefreshProperties.All)]
    [RulesCriteria("Custom AttributesList")]
    public list<string> AttributesCustomList
    {
        get { return _AttributesCustomList; }
        set { _AttributesCustomList = value; }
    }
0 голосов
/ 11 августа 2011

Вы не опубликовали никакого кода, поэтому я собираюсь угадать проблему. Как вы описываете, вы сериализуете коллекцию строк в файл XML, но когда вы десериализовали ее, вы заметили, что записи Дублируясь, это распространенный сценарий, когда ваша коллекция сначала имеет значения по умолчанию в классе, поэтому при десериализации из xml сериализатор xml не создает новую коллекцию строк, вместо этого он использует метод Add в перечислите и добавьте строки в вашу существующую коллекцию. Пример:

[Serializable()]
public class Foo
{
    private List<string> _myList = new List<string>(new string[] { "Some", "Data" });

    public List<string> MyList
    {
        get { _myList = value;}
        set { return _myList; }
    }

    public Foo() {}
}

В предыдущем классе "Foo", если вы создадите новый экземпляр Foo foo = new Foo(); и сериализуете его в xml, он будет сериализован правильно, но когда вы десериализуете его, вы обнаружите, что элементы коллекции были продублировано "Some, Data, Some, Data".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...