2010-08-24 6 views
0

У меня возникла проблема с созданием глобального массива, который я могу использовать в других функциях.vb.net - создание массива/списка из загруженных интерфейсов

У меня есть этот код прямо под "Public Class MyClass":

Dim LoadedPlugins As Array 

Тогда в функции у меня есть это:

Dim PluginList As String() = Directory.GetFiles(appDir, "*.dll") 
For Each Plugin As String In PluginList 
Dim Asm As Assembly 
Dim SysTypes As System.Type 
Asm = Assembly.LoadFrom(Plugin) 
SysTypes = Asm.GetType(Asm.GetName.Name + ".frmMain") 
Dim IsForm As Boolean = GetType(Form).IsAssignableFrom(SysTypes) 
If IsForm Then 
     Dim tmpPlugin As PluginAPI = CType(Activator.CreateInstance(SysTypes), PluginAPI) 
     LoadedPlugins(count) = tmpPlugin 

В файле интерфейса у меня есть:

Public Interface PluginAPI 
Function PluginTitle() As String 
Function PluginVersion() As String 
Function CustomFunction() As Boolean 
End Interface 

Теперь, очевидно, что это не сработает, как добавить tmpPlugin в массив или список, чтобы я мог использовать его в других функциях?

Главное, что мне нужно сделать, это перебрать все загруженные плагины и выполнить CustomFunction в отдельной функции, кроме той, которая загружает перечисленные выше плагины.

Может ли кто-нибудь мне помочь?

ответ

0

Используйте это для тусклых: Public Shared LoadedPlugins как массив

Однако я заметил несколько вещей
Некоторые советы, чтобы писать программы быстрее (в конце концов, но больше думать дизайна):

  • use Option Strict.
  • дает LoadedPlugins типа (PluginAPI)
  • использовать общий список вместо массива
  • не использует глобал. Выясните способ предоставления этой информации тем классам, которые в ней нуждаются
    • это немного искусства. Но не сдавайтесь - 5 программ позже вы его получите!
+0

общественность поделилась мне, и ваши другие советы были полезны. Мне удалось решить мою проблему, используя: Public Shared LoadedPlugins (10) As Object LoadedPlugins (count) = tmpPlugin – Joe

Смежные вопросы