Проблема с получением списка пользовательских классов для сериализации для user.config - PullRequest
0 голосов
/ 17 августа 2010

У меня есть следующие классы

[Serializable()]
public class ColumnList
{
    public ColumnList()
    {
        ListOfColumns = new List<Column>();
    }
    public ColumnList(string name) 
        : this()
    {
        Name = name;
    }

    List<Column> ListOfColumns { get; set;}
    public string Name { get; set; }
    //Extra methods cut out.
}
[Serializable()]
public partial class Column
{
    public Column()
    {
        VarName = "";
        HeaderName = "";
        ItemType = "";
        SelectText = "";
        Position = 0;
        Visable = true;
    }
    public Column(string varName, string headerName, string itemType, string selectText, int position)
    {
        VarName = varName;
        HeaderName = headerName;
        ItemType = itemType;
        SelectText = selectText;
        Position = position;
        Visable = true;
    }

    public string VarName { get; set; }
    public string HeaderName { get; set; }
    public string ItemType { get; set; }
    public string SelectText { get; set; }
    public int Position { get; set; }
    public bool Visable { get; set; }
    //extra methods cut out.
}

Со следующим в моем файле Settings.cs

[global::System.Configuration.UserScopedSettingAttribute()]
public List<ColumnList> ColumnListLists
{
    get { return ((List<ColumnList>)(this["ColumnListLists"])); }
    set { this["ColumnListLists"] = value; }
}

Итак, в основном у меня есть список класса, этот класс содержит имя и список другого класса. Этот класс имеет несколько строк, логическое значение и int.

Однако после запуска моей программы мой user.config содержит это.

<value>
    <ArrayOfColumnList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <ColumnList>
            <Name>Preproduction</Name>
        </ColumnList>
        <ColumnList>
            <Name>Production</Name>
        </ColumnList>
        <ColumnList>
            <Name>Contract Approval</Name>
        </ColumnList>
    </ArrayOfColumnList>
</value>

Он имеет имя ColumnList, но не содержит элементов Column. Любые предложения о том, что я делаю не так?

1 Ответ

2 голосов
/ 17 августа 2010

Поскольку ...

List<Column> ListOfColumns { get; set;}

... является частным, XML-сериализатор игнорирует его.

...