首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

com接口中有指针,net中改怎么传给参数给com接口?

2012-03-16 
com接口中有指针,.net中改如何传给参数给com接口????如题:com中定义,longMyArrayTest(VARIANT*vararr)。ne

com接口中有指针,.net中改如何传给参数给com接口????
如题:

com中定义,
long   MyArrayTest(VARIANT*   vararr);

。net中,封装后,
public   virtual   int   MyArrayTest(ref   object   vararr);

调用代码,
                      string[]   strarr   =   new   string[3]{ "aaa ",   "bbb ",   "ccc "};
                        System.Object   strobject   =   strarr;
                        axMfcComArray1.MyArrayTest(ref   strobject);


----
编译也通过了,   但是,倒运行得时候,   就有错误了,   抛出了一个异常,


未处理的“System.Runtime.InteropServices.COMException”类型的异常出现在   mscorlib.dll   中。

其他信息:   类型不匹配。   (异常来自   HRESULT:0x80020005   (DISP_E_TYPEMISMATCH))


请问各位高手,   该怎么传这个参数呢????


[解决办法]
如果我没猜错的话VARIANT是一个结构体。那么你要在C#中定义一个一样的结构体,才能将数据传送过去!
[解决办法]
Visual Basic .NET 更新了通用数据类型,旨在提供与公共语言运行库的互操作性。

Visual Basic 6.0
在 Visual Basic 6.0 中,Variant 用作通用数据类型。这意味着可在类型为 Variant 变量中存储任意类型的数据。

Visual Basic .NET
在 Visual Basic .NET 中,Object 是通用数据类型。类型为 Object 的变量可存放任意类型的数据。不支持 Variant 类型,其所有功能由 Object 提供。

Variant 在 Visual Basic .NET 中仍是保留字,即使它无语法用途。这有助于避免与其以前的含义相混淆。

VarType 函数返回提供对象变量数据类型分类的 VariantType 枚举的成员。您还可以使用 System 命名空间中的类来获得 Object 实例的数值数据类型信息,如以下代码所示:

Dim SomeObj As Object
' ... ... ... ... SomeObj is assigned some value during processing.
' ... ... ... ... Now we want to find out the data type of SomeObj.
Dim Dtype As Integer ' To hold numeric data type result.
Dtype = Type.GetTypeCode(SomeObj.GetType())

热点排行