5 votes

Comment éviter d'utiliser List<List<T>> ?

J'ai un service de WCF que je ne peux pas toucher qui retourne List<FilesWithSettings> . J'ai besoin d'entrer quelques PC qui sont regroupés et de récupérer les données. List<FilesWithSettings> pour chacun d'eux ainsi que PCIdentifier ce qui m'amène à Dictionary<PCIdentifier,List<FilesWithSettings>> o List<PCIdentifier> y List<List<FilesWithSettings>> ce qui n'est pas élégant et illisible.

Pouvez-vous me donner une solution plus élégante ?

6voto

Jackson Pope Points 9294

Je suppose que vous avez trois options :

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

ou :

Dictionary<PCIdentifier, List<T>>

Ce qui énonce mieux votre intention ou même.. :

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

et

List<PCResult>

Personnellement, je préfère la troisième, mais la deuxième est très bien aussi.

5voto

Marc Gravell Points 482669

J'aurais quelque chose comme

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

et renvoyer un List<PCState> . Cela évite tous les problèmes liés aux types complexes trop génériques, aux listes imbriquées, etc. et est facilement consommable.

2voto

Michael Stum Points 72046

Dictionary<PCIdentifier,List<FilesWithSettings>> est en fait assez élégant. Vous pouvez clairement identifier les PC individuels et itérer sur tous les PC, mais aussi obtenir toutes les données dont vous avez besoin pour chaque PC.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X