将string []作为对象引用传递给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);
}
还有其他人遇到这个问题吗?     

解决方法

我认为这篇文章应该可以帮助您设置com interop的编组。 http://msdn.microsoft.com/zh-CN/library/aa645736(v=vs.71).aspx