2010-08-24 30 views
0

我無法創建一個全局數組,我可以在其他函數中使用它。vb.net - 從加載的接口創建數組/列表

我有這樣的代碼正確的 「公共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

使用此爲您的暗淡: 公共共享 LoadedPlugins作爲陣列

不過,我注意到一些事情
一些提示,使編寫程序更快(在最後,但更多的思考設計):

  • 使用Option Strict。
  • 給LoadedPlugins類型(PluginAPI)
  • ,而不是使用數組
  • 泛型列表不使用全局變量。找出一種方法將此信息提供給需要它的課程
    • 這是一種藝術。但不要放棄 - 5個程​​序後,你會把它放下!
+0

公衆共享幫助我,您的其他提示很有用。 我設法解決我的問題使用: 公共共享LoadedPlugins(10)作爲對象 LoadedPlugins(count)= tmpPlugin – Joe 2010-08-26 17:13:28