如何动态调用类库中的某个类的某个方法

subzero 2006-03-06 03:16:31
类库libtest.dll
形如

namespace nstest
public class clstest
public sub subtest()
......
end sub
end class
end namespace


如何在代码中非引用的动态生成clstest并调用subtest,如果clstest是一个窗体,又如何调用,谢谢。
...全文
303 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
815815 2006-05-20
  • 打赏
  • 举报
回复
楼上能不能给出完整的代码,偶照上面去做老是提示未将对象引用到实例,郁闷....
intern9901 2006-03-07
  • 打赏
  • 举报
回复
Cnapollo(旁痞)正解
subzero 2006-03-07
  • 打赏
  • 举报
回复
自己解决了。。
subzero 2006-03-07
  • 打赏
  • 举报
回复
这是类库
Namespace namespacetest
Public Class classtest

Public Sub New()

End Sub

Public Sub subtest()

End Sub
End Class
End Namespace




这是调用部分

Dim asm As System.Reflection.Assembly
asm = System.Reflection.Assembly.LoadFrom("libtest.dll")
Dim o As Object = asm.CreateInstance("namespacetest.classtest")
MessageBox.Show(o.GetType().FullName)


o是nothing
subzero 2006-03-07
  • 打赏
  • 举报
回复
我在msdn中查到的也是这样,不过在我的vb.net中就是调不通
给oo赋值后,oo是nothing,为什么啊???
Cnapollo 2006-03-06
  • 打赏
  • 举报
回复
VB不熟,给你C#语法的
Assembly ass=Assembly.LoadFrom(@"c1.dll");//类库所在文件名
object oo=ass.CreateInstance("C1.Class2");//建立指定全名(带名空间)的类

Type mytype=oo.GetType();
MethodInfo mi=mytype.GetMethod("f");//指定方法名
//Console.WriteLine(mi.Name);
mi.Invoke(oo,null); //如方法有参数可将null换成object[]的参数

如果是窗口, Form form1=(Form)oo;
form1.show();
subzero 2006-03-06
  • 打赏
  • 举报
回复
你理解错了,libtest是一个编译好的类库dll
我需要在其他的应用中动态调用这个dll
naturalth 2006-03-06
  • 打赏
  • 举报
回复
Dim asb As [Assembly] = [Assembly].GetExecutingAssembly
Dim tForm As Type = asb.GetType("nstest." & Me.clstest)
Dim frm As Form = Activator.CreateInstance(tForm)
frm.ShowDialog()
这些可以查msdn呀
subzero 2006-03-06
  • 打赏
  • 举报
回复
谢谢回答,请详细用代码说明,谢谢。
intern9901 2006-03-06
  • 打赏
  • 举报
回复
装载程序集后用反射

16,722

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧