У меня есть проект, где мне нужно вызвать Dll Interop с C#.C# Вызвать функцию из Inter-взаимодействия, загруженного Reflection, дает несоответствие типа
dynamic Sql = variableFromTheEntryPoint;
string query = Sql.FormatSQLExt(ref text, objs);
Interop Декларация объекта Sql есть этот метод, как это:
[DispId(1610809348)]
string FormatSQLExt(ref string strSQLSt, params object[] vntParams);
Этот код будет работать, если я ссылаться на DLL в проект и использовать код:
Interop.StdPlatBS800.StdBSSQL Sql = variableFromTheEntryPoint as Interop.StdPlatBS800.StdBSSQL;
string query = Sql.FormatSQLExt(ref text, objs);
Я не могу использовать этот путь, потому что interop - это ERP, который имеет еженедельные обновления, и я не могу контролировать, когда они сделаны. Я уже использую AppDomain.CurrentDomain.AssemblyResolve для исправления большинства обновлений. он отлично работает, и большинство обновлений Dll Interop не нарушают код.
Проблема заключается в том, что интерфейс Interop изменяется, а затем мой код прерывается, потому что интерфейс моей Dll отличается от новой версии.
Я хотел бы, чтобы мой код переставал работать только тогда, когда были изменены методы, которые я использовал из interop.
Любые идеи?
Thx для информации, но поскольку «FormatSQLExt» находится внутри класса StdBSSQL, внутри находится StdPlatBS800, как DllImport знает, где эта функция объявлена? – 1st4ck