如何从COM对象(VB)读取Visual C#2010中的变量类型

如何从COM对象(VB)读取Visual C#2010中的变量类型,c#,com,C#,Com,我正在使用微软不久前发布的FAXCOMEXLib示例,并试图将其移植到C#。我遇到了一个返回包含字符串数组的变量类型的调用的问题。“jobID=objFaxDocument.ConnectedSubmit(objFaxServer);” 该过程返回一个显示“System.String[]”的messagebox。我似乎还记得在使用同样使用变体的Delphi时,变体的一个属性只是一个字符串,它显示了它所存储的内容。也许这就是这里发生的事情。但无论如何,我如何才能将这个字符串数组取出并将其转换为c#

我正在使用微软不久前发布的FAXCOMEXLib示例,并试图将其移植到C#。我遇到了一个返回包含字符串数组的变量类型的调用的问题。“jobID=objFaxDocument.ConnectedSubmit(objFaxServer);”

该过程返回一个显示“System.String[]”的messagebox。我似乎还记得在使用同样使用变体的Delphi时,变体的一个属性只是一个字符串,它显示了它所存储的内容。也许这就是这里发生的事情。但无论如何,我如何才能将这个字符串数组取出并将其转换为c#能够理解的东西呢

谢谢

参考文献:
(显示如何从VB6返回变量) (FAXCOMEXLib示例)


如果您使用的是C#4.0,您应该研究使用动态“type”

一个简单的cast就可以做到这一点:

object objIDs = objFaxDocument.ConnectedSubmit(objFaxServer);
string[] IDs = (string[])objID;

如果知道它是一个字符串数组,只需将结果强制转换为字符串[]:

string[] jobID = (string[]) objFaxDocument.ConnectedSubmit(objFaxServer);
MessageBox.Show("The Job ID is: " + jobID[0]);
可能传入的数据实际上是一个不同对象类型的数组(即异构数组)。在这种情况下,这将起作用(假设第一个元素确实是字符串):


以上两项工作,非常感谢。感谢你们大家,每天都在学习新的东西。
string[] jobID = (string[]) objFaxDocument.ConnectedSubmit(objFaxServer);
MessageBox.Show("The Job ID is: " + jobID[0]);
object[] jobID = (object[]) objFaxDocument.ConnectedSubmit(objFaxServer);
MessageBox.Show("The Job ID is: " + (string)jobID[0]);