使用 XmlSerializer 从 XML 读取到字典?

Reading from XML to Dictionary using XmlSerializer?

这个数组:

public List<Publisher> Publishers
{
    get { return _Publishers; }
    set { _Publishers = value; }
}
private List<Publisher> _Publishers;

XmlSerializer 用于将数据存储在 XML 文件中。

但是在应用使用上,我确实需要一个Dictionary<string, Publisher>,这样可以根据名称快速找到合适的Publisher对象

现在,我意识到我不能直接使用 XMLSerializer 来做到这一点,而且 这就是我使用 List 的原因。一旦从 XML 文件中读入数据,有没有什么巧妙的方法可以实现我想要的?

我意识到我可以迭代列表并构建字典。但是还有其他选择吗?

这会有帮助吗。

    public List<Publisher> Publishers
    {
        get { return _Publishers; }
        set { _Publishers = value; }
    }
    private List<Publisher> _Publishers;

    private Dictionary<string, Publisher> _PublishersDictionary;
    public Dictionary<string, Publisher> PublisherDictionary
    {
        get
        {
            if(this._PublishersDictionary == null)
            {
                this._PublishersDictionary = this.Publishers.ToDictionary(p => p.Name, p => p);
            }

            return this._PublishersDictionary;
        }
    }

Converting linq query to dictionary 找到的代码我刚刚跳过了 linq 查询结果部分。

此外,如果您将其序列化回 xml,序列化程序应忽略此 属性,因为它没有 setter,但您也可以添加 [xmlIgnore] 这个 属性.

上面的属性

我认为方法是用字典来支持它,并为序列化提供 List。像这样:

public List<Publisher> Publishers
{
    get { return _PublishersDictionary.Select(x => x.Value).ToList(); }
    set { _publishersDictionary = value.ToDictionary(x => x.Name, x => x); }
}
private Dictionary<string, Publisher> _publishersDictionary;

[XmlIgnore]
public Dictionary<string, Publisher> PublisherDictionary
{
    get { return _publishersDictionary; }
}