C # исключение System.ArgumentException в динамическом объекте - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть следующий код, взаимодействующий с сервером автоматизации через динамический объект:

class Program
{
    static string strProgId = "MyAutomation.Document";
    static dynamic pserver = null;
    static void Main(string[] args)
    {
        try
        {
            Type tPserver = Type.GetTypeFromProgID(strProgId);
            if (tPserver != null)
            {
                pserver = Activator.CreateInstance(tPserver);
            }
            pserver.About(null, 0);
            pserver.OpenDataFile(IntPtr.Zero, true, "Test.dat");
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
        if (pserver != null)
        {
            pserver.FileExit();
        }
    }
}

Как видите, он создает экземпляр сервера автоматизации и вызывает на нем два метода.Первый звонок работает как положено.Второй вызов выдает следующее исключение:

  e   {"Could not convert argument 0 for call to OpenDataFile."}  System.Exception {System.ArgumentException}
  Data    {System.Collections.ListDictionaryInternal} System.Collections.IDictionary> {System.Collections.ListDictionaryInternal} 
  HResult 0x80070057  int

Я не уверен, что здесь не так, поскольку оба метода имеют одинаковый аргумент 0 и первый вызов работает, как и ожидалось.Эти методы определены в файле ODL следующим образом:

[id(20)] boolean About(long hWnd, long msgID);
[id(35)] boolean OpenDataFile(long hWnd, boolean bEmbed, BSTR* bsPfyFilePath );

Спасибо за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...