怎样用反射实例化某一个引用dll里的表单实例

byj2001329 2006-09-06 02:49:11

比如一个exe引用了x.dll
x.dll里定义了一个窗体
namespace X.Forms
public class F
inherites system.windows.forms.form
......
end class
end NameSpace

如果用
dim t as type=assembly.load(x).gettype(x.forms.f)
dim f as form= activtor.createInstance(t)
f.show
可以生成实例

问题:
1、如果用以上方法,是否会造成x.dll的重复加载
2、既然是手工动态加载,是否可以不添加x.dll的引用
3、是否有其它更好的办法

...全文
316 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
byj2001329 2006-09-11
  • 打赏
  • 举报
回复
byj2001329 2006-09-10
  • 打赏
  • 举报
回复
对于动态加载的dll里面的方法又如何访问当前运行的exe里的数据呢?
byj2001329 2006-09-10
  • 打赏
  • 举报
回复
还有一个问题。就是如果动态加载dll,如何访问dll里某个类的共享方法或共享属性
namespace X.sets
public class Set
Public shared appSet() as object
public shared sub ApplySet
end sub
......
end class
end NameSpace

动态加载后
asm=assembly.load(x)
如何访问appSet()和ApplySet?
HAVENT 2006-09-08
  • 打赏
  • 举报
回复
向下兼容的,至于是否还有新方法就不知道了
byj2001329 2006-09-08
  • 打赏
  • 举报
回复
在vs2005里是否也是一样的处理方法?
机器人 2006-09-06
  • 打赏
  • 举报
回复
把这个Assembly保持成静态变量就行了。

Public Static Assembly assX = null;


...

if(Class1.assX == null)
assX = Assembly.Load(x);
xiaomaolover 2006-09-06
  • 打赏
  • 举报
回复
petshop的factroy类就是这样做的.看下..
byj2001329 2006-09-06
  • 打赏
  • 举报
回复
用一个hashtable把加载过的程序集及其对于的dll文件路径保存起来,加载dll时检查一下
能举一个小示例吗
jackyped 2006-09-06
  • 打赏
  • 举报
回复
1、用一个hashtable把加载过的程序集及其对于的dll文件路径保存起来,加载dll时检查一下
2、当然可以不添加引用
3、好的办法就时不添加引用,然后通过这个重载,
[Visual Basic] Overloads Public Function CreateInstance(String) As Object
[C#] public object CreateInstance(string);
例如:
activtor.createInstance("X.Forms.F")

16,554

社区成员

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

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