我需要使用XML文件填充类。
Dictionary<string, CustomStruct>
我的问题是如何填充struct
这是public struct Stat
{
public int StatValue { get; set; }
public int StatLast { get; set; }
public Stat(int statValue, int statLast)
{
StatValue = statValue;
StatLast = statLast;
}
}
:
string loadDataPath = Application.persistentDataPath + "/saveData.xml";
XDocument loadData = XDocument.Load(loadDataPath);
var query = from item in loadData.Elements("Ship")
select new Ship()
{
Name = (string) item.Element("Name"),
Owner = (string) item.Element("Owner"),
Aim = item.Elements("Aim") // <-- Here lies the problem.
// ...
};
我的LINQ查询如下所示:
XElements
对于每个目标Aim TKey = XML Type
Aim TValue.StatValue = XML Value
Aim TValue.StatLast = XML Last
,我需要使用以下方法填充Aim字典:
{{1}}
答案 0 :(得分:1)
使用ToDictionary()
扩展方法实现您的目标:
struct
另外,我必须将class
更改为Stat
struct
才能使其正常工作。
如果您想使用public struct Stat
{
public int StatValue { get; set; }
public int StatLast { get; set; }
public Stat(int statValue, int statLast) : this()
{
StatValue = statValue;
StatLast = statLast;
}
}
,您需要稍微修改一下:
{{1}}
来自this answer。
答案 1 :(得分:1)
这是正确的LINQ to XML语法:
Aim = item.Elements("Aim").ToDictionary(
e => (string)e.Element("Type"),
e => new Stat((int)e.Element("Value"), (int)e.Element("Last")))