我正在使用微软发布一段时间的FAXCOMEXLib示例,并尝试将其移植到C#。我在调用时遇到问题,该调用返回一个包含字符串数组的Variant类型。 “jobID = objFaxDocument.ConnectedSubmit(objFaxServer);”
该过程返回一个显示“System.String []”的消息框。我似乎记得在使用Delphi时也使用了变体,变体的一个属性只是一个显示它存储内容的字符串。也许这就是这里发生的事情。但无论如何,我怎么能把这个字符串数组输出并转换成c#会理解的东西?
由于
参考文献:
http://support.microsoft.com/kb/317030(显示如何从VB6返回变体)
http://msdn.microsoft.com/en-us/library/ms692936(v=VS.85).aspx(FAXCOMEXLib的示例)
FAXCOMEXLib.FaxDocument objFaxDocument = new FAXCOMEXLib.FaxDocument();
FAXCOMEXLib.FaxServer objFaxServer = new FAXCOMEXLib.FaxServer();
object jobID;
try {
//Connect to the fax server
objFaxServer.Connect("");
// skipping some code, see MS example in URL above
jobID = objFaxDocument.ConnectedSubmit(objFaxServer);
MessageBox.Show("The Job ID is :" + jobID);
答案 0 :(得分:1)
一个简单的演员会做到这一点:
object objIDs = objFaxDocument.ConnectedSubmit(objFaxServer);
string[] IDs = (string[])objID;
答案 1 :(得分:1)
如果您知道它是一个字符串数组,只需将结果转换为字符串[]:
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]);
答案 2 :(得分:0)
如果您使用的是C#4.0,则应使用动态“类型”进行调查