Bonjour,
J'ai un objet system possédant plusieurs attributs et j'aimerais parcourir ses attributs pour récupérer ceux que je souhaite tout en construisant un string (qui sera le "path" de l'objet).
Voici ma classe CmbdSystem:
Et ma classe CmbdSubSystem :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 public class CmbdSystem { public CmbdSystem() { mbdTree = null; inports = new List<CmbdInport>(); outports = new List<CmbdOutport>(); triggerports = new List<CmbdTriggerPort>(); subsystems = new List<CmbdSubSystem>(); } public string mbdTree { get; set; } public List<CmbdInport> inports { get; set; } public List<CmbdOutport> outports { get; set; } public List<CmbdTriggerPort> triggerports { get; set; } public List<CmbdSubSystem> subsystems { get; set; } private static CmbdSystem FindSystem(CmbdSubSystem subSystem) { return subSystem.system; } }
un objet system peut ainsi posséder des subsystems qui eux même possèdent un système et ainsi de suite...(sous forme d'arbre).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public class CmbdSubSystem { public CmbdSubSystem(string name, CmbdSystem system) { this.name = name; this.system = system; } public string name { get; set; } public CmbdSystem system { get; set; } }
A l'aide d'une méthode je parviens à récupérer les systèmes que je souhaite :
Cette méthode fonctionne à moitié car je n'arrive pas à récupérer un path correct pour chaque nom de mbd trouvé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 public static List<CmbdSystem> GetMbd(CmbdSystem system, String mbd, List<string> mbd_tree) { foreach (CmbdSubSystem sub in system.subsystems) { tree += "//"+ sub.name; if (sub.name == mbd) { Console.WriteLine("found"); //tree += sub.name; systems.Add(sub.system); mbd_tree.Add(tree);// ajouter le path à une liste string à chaque fois qu'un sous système porte le nom du mbd tree = null; } else { CmbdSystem system_temp = FindSystem(sub); GetMbd(system_temp, mbd, mbd_tree); } } return systems; } public static CmbdSystem FindSystem(CmbdSubSystem subSystem) { return subSystem.system; }
Par exemple pour mbd = "susbsystem_1".
Je voudrais que mon path est la forme suivante : subsystem_x//subsystem_xx//susbsystem_1 par exemple.
Merci.
Partager