Jiong

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

加载COM对象:
Type tmpType = Type.GetTypeFromProgID("对象名称");
Object tmpClass = Activator.CreateInstance(tmpType);

加载.Net程序集:
Object tmpClass = Assembly.LoadFile("程序集路径").CreateInstance("程序集名称", true);
Type tmpType = tmpClass.GetType();

读取属性值:
tmpValue = tmpType.InvokeMember("属性名称", BindingFlags.GetProperty, null, tmpClass, null);

对属性赋值:
tmpType.InvokeMember("属性名称", BindingFlags.SetProperty, null, tmpClass, new Object[] { "参数1", "参数2" });

执行方法:
tmpReturn = tmpType.InvokeMember("方法名称", BindingFlags.InvokeMethod, null, tmpClass, new Object[] { "参数1", "参数2" });

以上只是简单描述了使用的方法,具体的请查 .Net 的帮助。

但上边这种使用方法有个比较棘手的问题,就是无论我把这些代码放在独立的类或独立的线程中运行,运行完后系统都没有进行释放,就算我调用“GC.Collect();”也没用。后来使用“AppDomain”也没成功,用“AppDomain.CreateInstanceFromAndUnwrap”把程序集载入后无法使用“InvokeMember”方法来使用程序集。不知道还有其他的好方法吗?

 

posted on 2007-03-20 18:20  Jiong  阅读(2141)  评论(0编辑  收藏  举报