Bonjour,
Je cherche à accéder à une variable (une SqlConnection) depuis une interface.
Je développe une appli à l'aide de plugin (j'ai suivi ce tuto http://drq.developpez.com/dotnet/articles/plugin/vbnet/). Passer des infos à mon interface, pas de problème, mais faire accéder mon interface à mon programme principal : j'y arrive pas...
Voici les parties de code que j'ai écrites jusqu'à présent :
Mon interface :
Mon programme principal :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Public Interface IPlugin Function NomPlugin() As String Function Menu() As System.Windows.Forms.UserControl Sub ConnexionBaseDonnees(ByVal Connexion As System.Data.SqlClient.SqlConnection) End Interface
Mon plugin :
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 Imports System.IO Public Class frmPrincipale Private Sub frmPrincipale_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Me.Refresh() Connexion() Dim RepertoirePlugin As New DirectoryInfo(Directory.GetCurrentDirectory + "\Plugin") If RepertoirePlugin.Exists Then Dim message As String = String.Empty Dim frmSplash As New frmSplashRecherche frmSplash.lblMessage.Text = "Chargement des modules..." frmSplash.Show() frmSplash.Refresh() Try For Each Fichier In Directory.GetFiles(RepertoirePlugin.FullName, "Plugin*.dll") Dim obj As Object obj = AppDomain.CurrentDomain.CreateInstanceFromAndUnwrap(Fichier, "PluginApp.PluginClass") frmSplash.lblMessage.Text = "Chargement du module " + CType(obj, IPlugin.IPlugin).NomPlugin() + "..." frmSplash.Refresh() Dim ControlePlugin As UserControl = CType(obj, IPlugin.IPlugin).Menu Dim BarreMenuPlugin As MenuStrip = CType(ControlePlugin.Controls.Item(0), MenuStrip) BarreMenu.Items.AddRange(BarreMenuPlugin.Items) CType(obj, IPlugin.IPlugin).ConnexionBaseDonnees(Fonctions.maConnexion) Next Catch ex As Exception message = ex.Message Finally frmSplash.Close() frmSplash.Dispose() If message.Length > 0 Then MsgBox("Le chargement d'un ou plusieurs module(s) a échoué." + vbCrLf + vbCrLf + "Message retourné : " + vbCrLf + vbCrLf + message, MsgBoxStyle.Critical, "Erreur lors du chargement des modules") End If End Try End If End Sub End Class
J'ai essayé de suivre la piste de la Réflexion mais sans succès (j'avoue que c'est un peux obscur pour moi aussi).
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 Public Class PluginClass Implements IPlugin.IPlugin Private maConnexion As SqlClient.SqlConnection Private Sub AjouterToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AjouterToolStripMenuItem.Click Try MsgBox(maConnexion.State) Catch ex As Exception MsgBox(ex.ToString) End Try End Sub Public Function NomPlugin() As String Implements IPlugin.IPlugin.NomPlugin Return "Gestion des étiquettes" End Function Public Function Menu() As System.Windows.Forms.UserControl Implements IPlugin.IPlugin.Menu Return Me End Function Public Sub ConnexionBaseDonnees(ByVal Connexion As SqlClient.SqlConnection) Implements IPlugin.IPlugin.ConnexionBaseDonnees maConnexion = Connexion MsgBox(maConnexion.State) End Sub End Class
Si quelqu'un a un tuyau, un tuto ou autre, MERCI !!!
Partager