vb.net动态加载程序集并且调用集合方法
Imports SystemQH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
Imports System.ReflectionQH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
Imports System.IOQH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
Namespace RemoteUserQH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
Public Class RemoteUserClassQH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
Public Sub New()QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
'装载程序集。QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
Dim name As New AssemblyName()QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
name.CodeBase = "file://" + Directory.GetCurrentDirectory() + "\" + "WorkQueueLib.dll"QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
Dim assembly As Assembly = AppDomain.CurrentDomain.Load(name)QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
' 实例化自定义控件方法1。QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
Dim remoteObj As Object = assembly.CreateInstance("WorkQueueLib.VBWorkQueue.Queue")QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
'实例化自定义控件方法2。QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
'Dim Queue As Object = remoteType.InvokeMember(Nothing, _QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
' BindingFlags.DeclaredOnly Or _QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
' BindingFlags.Public Or _QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
' BindingFlags.NonPublic Or _QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
' BindingFlags.Instance Or _QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
' BindingFlags.CreateInstance, _QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
' Nothing, _QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
' Nothing, _QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
' Nothing)QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
'获得程序集类型。QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
Dim remoteType As Type = assembly.[GetType]("WorkQueueLib.VBWorkQueue.Queue")QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
'设置空间随窗体改变大小。QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
remoteObj.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or _QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
System.Windows.Forms.AnchorStyles.Bottom) Or _QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
System.Windows.Forms.AnchorStyles.Left) Or _QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
System.Windows.Forms.AnchorStyles.Right), _QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
System.Windows.Forms.AnchorStyles)QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
'obj2.Location = New System.Drawing.Point(171, 190)QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
remoteObj.Name = "Queue"QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
remoteObj.Size = New System.Drawing.Size(500, 253)QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
Form1.Controls.Add(remoteObj)QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
' Call the method QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
Dim method As MethodInfo = remoteType.GetMethod("InitOutlook1")QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
'给调用方法传递参数。QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
method.Invoke(remoteObj, Nothing)QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
Dim method1 As MethodInfo = remoteType.GetMethod("InitAllFloders")QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
''参数集合 QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
method1.Invoke(remoteObj, New Object() {Form1.TreeView1, True})QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
QH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
End SubQH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
End ClassQH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY
End NamespaceQH5"¸ÖÊbbs.szblogs.com|7üÈßtÊÙY