CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  VB.NET

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

楼主subzero(赘姆烂壳)2006-03-06 15:16:31 在 .NET技术 / VB.NET 提问

类库libtest.dll  
  形如  
   
  namespace   nstest  
      public   class   clstest  
          public   sub   subtest()  
              ......  
          end   sub  
      end   class  
  end   namespace  
   
   
  如何在代码中非引用的动态生成clstest并调用subtest,如果clstest是一个窗体,又如何调用,谢谢。 问题点数:50、回复次数:10Top

1 楼intern9901()回复于 2006-03-06 15:24:26 得分 0

装载程序集后用反射Top

2 楼subzero(赘姆烂壳)回复于 2006-03-06 15:39:58 得分 0

谢谢回答,请详细用代码说明,谢谢。Top

3 楼naturalth(自我批判,是思想、品德、素质、技能创新的优良工具)回复于 2006-03-06 17:19:56 得分 10

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呀Top

4 楼subzero(赘姆烂壳)回复于 2006-03-06 18:09:03 得分 0

你理解错了,libtest是一个编译好的类库dll  
  我需要在其他的应用中动态调用这个dllTop

5 楼Cnapollo(旁痞)回复于 2006-03-06 19:00:12 得分 40

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();  
  Top

6 楼intern9901()回复于 2006-03-07 09:14:01 得分 0

Cnapollo(旁痞)正解Top

7 楼subzero(赘姆烂壳)回复于 2006-03-07 14:03:12 得分 0

我在msdn中查到的也是这样,不过在我的vb.net中就是调不通  
  给oo赋值后,oo是nothing,为什么啊???Top

8 楼subzero(赘姆烂壳)回复于 2006-03-07 14:06:14 得分 0

这是类库  
  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是nothingTop

9 楼subzero(赘姆烂壳)回复于 2006-03-07 16:42:39 得分 0

自己解决了。。Top

10 楼815815(比尔.net.xp)回复于 2006-05-20 15:30:22 得分 0

楼上能不能给出完整的代码,偶照上面去做老是提示未将对象引用到实例,郁闷....Top

相关问题

  • 能否动态调用类
  • 动态库中是否能调用MFC的类库
  • 调用动态连接库
  • 调用动态链接库
  • 如何调用动态库?
  • 动态库调用问题
  • 动态库调用出错
  • linux下如何调用动态库中的类?
  • 如何使用C#动态调用自己写的C#类库
  • 作动态链接库供vc调用如何改写AnsiString类型

关键词

  • oo
  • 代码
  • asm
  • dll
  • 调用
  • clstest
  • 库
  • subtest
  • 类
  • libtest

得分解答快速导航

  • 帖主:subzero
  • naturalth
  • Cnapollo

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo