Bonjour à tous,
Je travaille actuellement sur une application Windows Form en vb.net et avant de créer toutes mes classes j'aurais besoin de vos conseils.
Je précise que je travaille sous Visual Studio 2012.

Mes contraintes :

  • Un et un seul client,
  • Un client peux disposer de plusieurs serveurs,
  • Un serveur est constitué de plusieurs groupes,
  • Chaque groupe est constitué d'item (qui ont un nom et une valeur)


J'aimerais pouvoir créer/associer/utiliser mes objets de la même manière que le code (exemple) suivant :

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
Sub MonApplication_VBNET()
    'Création d'un client
    Dim monClient As OPCClient = New OPCClient("Nom d'un projet client")
 
    'Ajout de 2 serveurs dans l'objet client
    Dim monServeur1 As OPCServeur = monClient.Serveurs.Ajouter("MonServeurLocal", "127.0.0.1")
    Dim monServeur2 As OPCServeur = monClient.Serveurs.Ajouter("MonServeurDistant","169.9.2.1")
 
    'Ajout de 2 groupes dans le serveur 1
    Dim monGroup1 As OPCGroupe = monServeur1.Groupes.Ajouter("Un 1er groupe")
    Dim monGroup2 As OPCGroupe = monServeur1.Groupes.Ajouter("Un 2ème groupe")
 
    'Ajout d'item et de valeur dans le groupe 1 et le groupe 2
    Dim monItem1 As OPCItem = monGroup1.Ajouter("toto", 125)
    Dim monItem2 As OPCItem = monGroup1.Ajouter("tata", 326)
    Dim monItem3 As OPCItem = monGroup2.Ajouter("titi", 152)
 
    '----------------------------------
    'Le but final serait de pouvoir accéder à une propriété de l'item en utilisant tout le chemin d'accès
    'par leur nom
    MessageBox.Show(monClient.Serveur("MonServeurLocal").Groupe("Un 1er groupe").Item("tata").valeur) 'devrait afficher 326
    'ou par leur num
    MessageBox.Show(monClient.Serveur(0).Groupe(0).Item(1).valeur)
 
End Sub
Actuellement j'ai fait un design où chaque objet dispose d'une collection générique d'objets associés entre eux, mais leur utilisation est assez lourde et que je trouve pas très claire.

Auriez vous des pistes pour obtenir le résultat montré au dessus ? ou comment verriez vous la chose ?
Merci de votre aide précieuse