使用 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; }
}
这个数组:
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; }
}