Je vous écris un programme et je veux le programme pour soutenir les plugins. J'ai créé une interface que le programme doit implémenter. Je suis en utilisant le code suivant de mon programme principal pour appeler le plugin:Dynamiquement chargement des assemblages .NET
Dim asm As Assembly = Assembly.LoadFrom(ff.FullName)
' Get the type
Dim myType As System.Type = asm.GetType(asm.GetName.Name + "." + asm.GetName.Name)
' If the type is null then we try again without the root namespace name
If myType Is Nothing Then myType = asm.GetType(asm.GetName.Name)
' Check to see if the plugin implements the required Interface
Dim IsMyPlugin As Boolean = GetType(LGInterfaces.ILGSQLPlugin).IsAssignableFrom(myType)
Dim ActivePlugin As New PluginObject()
If IsMyPlugin Then
ActivePlugin.Plugin = CType(Activator.CreateInstance(myType), LGInterfaces.ILGPlugin)
Tout fonctionne et je suis en mesure d'accéder à mes propriétés exposées, sauf pour un problème que je ne peux pas comprendre. Dans mon plug-in, j'utilise le code suivant pour exposer une propriété:
Private m_PanelObject As Windows.Forms.Control
Public Property PanelObject() As Windows.Forms.Control
Get
Return m_PanelObject
End Get
Set(ByVal value As Windows.Forms.Control)
m_PanelObject = value
End Set
Ok, donc je mets cette propriété de mon programme principal et tout fonctionne. Sauf, après un certain temps, m_PanelObject est mis à Nothing pour une raison étrange. Je ne le mets à Nothing nulle part dans mon programme et il n'y a pas de place dans le code du plugin qui le définit à Nothing. Alors qu'est-ce qui me manque ici? Je suis sûr que ce sera assez évident. Merci d'avance
Pouvez-vous fournir un échantillon de votre programme principal, en particulier lorsque la ligne où l'exception est levée? – Galilyou
La ligne suivante est appelée à partir du programme principal: Plugin.Plugin.DataWriteHeader (FileWriter, "TestTable") Ceci est un sous dans le plugin. Le plugin lui-même est l'endroit où l'exception est lancée. –