我有一个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);
}
还有其他人遇到过这个问题吗?
答案 0 :(得分:0)
我认为这篇文章可以帮助您为com interop设置编组。
http://msdn.microsoft.com/en-us/library/aa645736(v=vs.71).aspx