如何避免使用List <list <t>&gt;?</list <t>

时间:2011-12-08 07:14:55

标签: c#

我有一个无法触及的WCF服务返回List<FilesWithSettings>。 我需要输入几个组合在一起的PC并为每个PC检索List<FilesWithSettings>以及PCIdentifier,这会将我带到Dictionary<PCIdentifier,List<FilesWithSettings>>List<PCIdentifier>List<List<FilesWithSettings>>优雅而不可读。

你能给我更优雅的解决方案吗?

3 个答案:

答案 0 :(得分:6)

我猜你有三个选择:

List<List<T>> // Which is pretty nasty

或:

Dictionary<PCIdentifier, List<T>>

哪个更能说明你的意图甚至:

class PCResult
{
    PCIdentifier Identifier { get; set; };
    List<T> Results { get; set; }
}

List<PCResult>

我个人更喜欢第三种,但第二种也很好。

答案 1 :(得分:5)

我会喜欢

[DataContract]
public class PCState // need a better name
{
    [DataMember]
    public PCIdentifier Identifier {get;set;}
    [DataMember]
    public List<FilesWithSettings> Files {get;set;}
}

并返回List<PCState>。这避免了复杂的过度泛型类型和嵌套列表等的所有问题,并且很容易被消费。

答案 2 :(得分:2)

Dictionary<PCIdentifier,List<FilesWithSettings>>实际上非常优雅。您可以清楚地识别单个PC并迭代所有PC,但也可以获得每台PC所需的所有数据。