我试图从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了很多,但我找不到合适的解决方案。
你能帮我一点吗?