在 C# 中动态加载COM和.Net程序集及问题

加载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”方法来使用程序集。不知道还有其他的好方法吗?

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值