如何在IDictionary中存储多个项目?

我有这个IDictionary声明: IDictionary trace;
在里面我想保存一个json反序列化返回的元素列表,实际上我这样做:

 var obj = JsonConvert.DeserializeObject<List>(responseText); foreach (var item in obj) { trace["date"] = item.trace.details.date; trace["type"] = item.trace.details.type; foreach (var trace in item.trace.context.context) { trace["context"] = JsonConvert.SerializeObject(trace); } } 

现在这个代码运行良好,但只保存迭代的最后一项,这’因为当我遍历项目时, date, type etc...被替换,但我希望存储项目不在每次新迭代中替换它。
如何用IDictionary做到这一点?

请注意: trace.x是反序列化json的类的名称。

进一步的问题 :使用IDictionary可能不是一个好主意实现这一点?

看起来你最好使用专门的课程,如下所示:

 public class TraceInfo { public string Date { get; set; } public string Type { get; set; } public List ContextItems { get; set; } } 

然后,对于obj每个值,使用new TraceInfo()创建一个TraceInfo对象并设置其属性。

然后,您可以将它们存储在ListDictionary ,您可以选择它们。