将字符串[]作为对象引用传递给COM对象

时间:2011-05-24 21:30:17

标签: c# asp.net web-services com

我有一个Web服务,它包装COM对象的函数以减少RPC通信错误。我传递给特定Web服务的参数是string[]。问题似乎在于COM对象函数,它需要一个对象引用。

网页上会显示一些错误,因为它们来自COMClass(错误87),其他错误则是编译错误。我试图说明下面是哪个。

[WebMethod(EnableSession=true)]
public int WSFunc(string[] StringArray){
    //object StringArr = (object)((object[])StringArr); //returns error 87 in webpage log
    //object StringArr = (object)StringArr; //returns error 87 in webpage log

    //public override int COMClass.Func(ref object pStringList)
    return COMClass.Func(ref StringArr);

    //return COMClass.Func(ref StringArray); //Doesn't build, cannot convert from 'ref string[]' to 'ref object' (CS1503)

    //return COMClass.Func(ref (object)StringArr);  //Doesn't build, A ref or out argument must be an assignable variable (CS1510)
}

此外,这会产生相同的结果(错误87 - 参数不正确):

[WebMethod(EnableSession=true)]
public string WSFunc(string[] StringArray){
    object[] StringObj = new object[StringArray.Length];
    for(int i = 0; i < StringArray.Length; i++){
        StringObj[i] = StringArray[i];
    }

    object MyString = (object)StringObj;
    return ComClass.Func(ref MyString);
}

还有其他人遇到过这个问题吗?

1 个答案:

答案 0 :(得分:0)

我认为这篇文章可以帮助您为com interop设置编组。

http://msdn.microsoft.com/en-us/library/aa645736(v=vs.71).aspx