vb.net - 从加载的接口创建数组/列表

时间:2010-08-24 23:07:15

标签: 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,而不是加载上面列出的插件。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

将此用于昏暗:     公共共享 LoadedPlugins As Array

但是我注意到了一些事情 一些提示,使编写程序更快(最后,但更多的设计思路):

  • 使用Option Strict。
  • 给LoadedPlugins一个类型(PluginAPI)
  • 使用通用列表而不是数组
  • 不要使用全局变量。找出一种方法将此信息提供给需要它的类
    • 这是一门艺术。但是不要放弃 - 5个程​​序以后你会让它失望!