Как читать тип варианта в Visual С# 2010 из объекта COM (VB)

Я работаю с примером FAXCOMEXLib, который microsoft опубликовал некоторое время назад и пытаюсь перенести его на С#. У меня возникают проблемы с вызовом, который возвращает тип Variant, который содержит строковый массив. "jobID = objFaxDocument.ConnectedSubmit(objFaxServer);"

Процедура возвращает окно сообщения, которое показывает "System.String []". Я, кажется, вспоминаю, что работаю с Delphi, которая также использует варианты, что одно свойство варианта - это просто строка, которая показывает, что она хранит. Возможно, это то, что происходит здесь. Но так или иначе, как я могу получить этот массив строк и преобразовать его во что-то, что С# понял бы?

благодаря

Рекомендации:
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);
+1
источник поделиться
3 ответа

Простой бросок сделает трюк:

object objIDs = objFaxDocument.ConnectedSubmit(objFaxServer);
string[] IDs = (string[])objID;
+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]);
+1
источник

Если вы работаете с С# 4.0, вам следует исследовать с помощью динамического типа,

0
источник

Посмотрите другие вопросы по меткам или Задайте вопрос