ObjectControl接口与“未设置对象变量或 With block 变量”的问题

GDU 2006-12-28 12:19:11
最近的项目在.NET(C#)中使用合作方从前开发的COM组件,在调用其方法时遇到了“未设置对象变量或 With block 变量”错误。这个组件已经使用了很长一段时间,但这是第一次用于.NET环境。我搜索了一些相关的文章,大抵有以下几种情况会引起该错误:

1、在COM组件开发时“将变量设为公有,或使用了晚绑定”。
由于该组件已经应用了很长时间,所以应该不会是这个问题。况且即便这里有问题,修改它的可能性也不大。

2、在应用该组件的时候“使用了晚绑定”。
应用该组件的客户代码我可以控制,没有用晚绑定。

网上大部分描述或“解决”该问题的文章我都看过了,用处不大。该组件本身不太可能出现问题,最接近的应该是下面这个原因

3、MTS的问题,确切说是ObjectControl接口的问题。
由于这个原因导致问题的可能性比较大。MSDN上有一篇文章讨论这个问题,但仍是针对COM组件本身的实现。包括组件要实现ObjectControl接口、在Activate方法中调用GetObjectContext方法获取对象的上下文等等。该文档在http://support.microsoft.com/?scid=http%3a%2f%2fask.support.microsoft.com%2fkb%2f250309%2f。
我研究了一下这个组件,其中的类应该实现了ObjectControl接口。

是否还有其它原因?

那么在客户代码中应该怎样使用这样的类型?假设COM组件中有类型名为SQLCall,其中有方法名为GetProductEntry()。那么是否需要在客户代码中为其设置上下文环境?还是需要在机器上配置COM+服务的某些设置?

谢谢!
...全文
200 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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