WebGIS开发--滑铁卢(之一)

本文探讨了在C#网站开发过程中遇到的问题,特别是使用IUnknown接口导致的对象查询失败现象,并通过将接口更改为IDispatch成功解决了该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IDispatch接口与IUnkown接口, 介绍区别的文章很多 ,我就不废话连篇啦.

原有组件, 全部定义为继承于IUnknown接口, 在C#语言中,开发桌面版系统, 没有遇到任何问题, 可是开发网站, 问题就来了.
例如下面代码:
{
   IMap m = new MapClass();
   IMapLayers lyrs = m as IIMapLayers;
}
IMap IMapLayers都是组件类MapClass的接口, m,不为空, 可是, lyrs却是空的!
C#语言问题??可是, 一样的代码, 放在窗体项目中, 没有问题啊!
开发环境问题??去网站下载补丁, 补到最新, 问题依旧啊!

轮到我头大了!
是不是C#开发网站的时候, 还是翻译成类似脚本语言再执行呢?? 所以对于IUnknown接口的查询, 无法获取正确结果?

心中有了这样一个假设, 坐不住啊, 周六来验证一下--把用到的接口都改为继承于IDispatch,dual 类型, 然后再引入到网站项目, F5, 哗啦啦....错误不见了!

好了, 接着的一天里, 我就把所有组建库工程中的接口, 都改为IDispatch!

经此一劫, 我发现, 自己还要看看C#, .net framework的机制, 否则, 二次开发想无头苍蝇, 乱着出路
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值