Bonjour,
J'ai une collection nommée Devices qui contient différents objets implémentant une interface commune (iDevice), et je souhaiterais faire une fonction qui me permette de boucler sur tous les Devices de ma collection pour exécuter une méthode... Jusque là tout va bien
Sauf que je cherche à exécuter la méthode en fonction d'une variable de type string...
En gros en code, je cherche à faire quelque chose de ce genre :
Existe-t'il une méthode permettant de faire cela?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Public Sub ExecuteOnEachDevices(objDevices As Devices, strFonctionToCall As String) Dim objDevice As iDevice For Each objDevice In objDevices Application.Run objDevice & "." & strFonctionToCall Next End Sub
Je précise que j'ai 5 classes qui implémentent l'interface iDevice à ce jour (avec une dizaine de fonctions) et que ce nombre va augmenter avec le temps... Donc je pense que vous comprendrez si je dis que je veux éviter de me taper des fonctions du style :
Cet exemple est volontairement basique pour avoir la syntaxe (si elle existe) me permettant de faire ce que je veux...
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
28 Public Sub ExecuteOnEachDevices(objDevices As Devices, strFonctionToCall As String) Dim objDevice As iDevice For Each objDevice In objDevices Application.Run objDevice.Name & "_" & strFonctionToCall Next End Sub Public Sub Device1_Fonction1() Device1.Fonction1 end Public Sub Device2_Fonction1() Device2.Fonction1 end Public Sub Device1_Fonction2() Device1.Fonction2 end Public Sub Device2_Fonction2() Device2.Fonction2 end
En vérité j'effectue des for each imbriqués sur 2 à 3 niveaux avec des fois des conditions d'autres fois non... Mais au final beaucoup de fonctions utilisent toujours la même syntaxe (hormis le nom de la méthode qui change) et vu le nombre de fonctions qu'il me reste à faire ça va finir par être obèse dans pas longtemps à ce rythme là...
Avant de poster un nouveau sujet, j'ai recherché mais n'ai rien vu qui correspond exactement à ce que je recherche... Donc je m'excuse d'avance si ce sujet à déjà été abordé ailleurs.
Merci d'avoir pris le temps de me lire, et merci à ceux qui m'apporteront une réponse !![]()





Répondre avec citation



Partager