将ref。对象数组从.net传递给COM服务器

时间:2016-06-09 05:47:52

标签: c++ .net com vb6 marshalling

我试图从vb6转换为vb.net,我面临一个挑剔的问题。

我必须从vb.net将引用数组对象传递给COM服务器,但传递的数组对象的变体类型只有VT_DISPATCH,VT_ARRAY。但是,我也需要一个VB_BYREF。

以下是COM服务器上的方法。

    void myCOMSub ( Variant FAR* oArray )
    {
            if ( (VT_DISPATCH | VT_ARRAY | VT_BYREF) == oArray->vt )
                    // success
            else
                    // fail
    }

这是转换前的vb6代码。

    Dim oOutputArray() As Object

    MyComApp.myComSub(oOutputArray)

没有问题,oArray的变体类型总是有3种类型。

所以,我将此部分转换为vb.net,如下所示         Dim oOutputArray()As Object = New Object(){}

    MyComApp.myComSub(oOutputArray)

当使用vb.net时,com项目中的oArray只有2种类型,不包括VT_BYREF。

据我所知,vb6默认传递ByRef对象,但vb.net默认传递ByVal。 我认为在vb.net上制作一个ref对象需要更多的工作。所以我google了很多,但我找不到合适的解决方案。

你能帮我一点吗?

0 个答案:

没有答案