У меня есть элемент управления SAP RPC OCX, который я хотел бы использовать. В C # 4 следующий код работает нормально:
System.Type t = System.Type.GetTypeFromProgID("SAP.Functions", true);
dynamic fc = System.Activator.CreateInstance(t, false);
dynamic connection = fc.Connection;
connection.System = "";
Следующий код НЕ работает (даже если соединение НЕ является нулевым)
System.Type t = System.Type.GetTypeFromProgID("SAP.Functions", true);
dynamic fc = System.Activator.CreateInstance(t, false);
var connection = fc.Connection as SAPLogonCtrl.Connection
connection.System = "";
Выдается следующая ошибка: «Попытка прочитать или записать защищенную память. Это часто указывает на то, что другая память повреждена».
Самым странным фактом является следующее:
System.Type t = System.Type.GetTypeFromProgID("SAP.Functions", true);
dynamic fc = System.Activator.CreateInstance(t, false);
dynamic c1 = fc.Connection;
var c2 = fc.Connection as SAPLogonCtrl.Connection;
if (c1 == c2)
c2.System = "";
Последняя строка выполняется и выдает то же исключение !!! Замена c2 на c1 работает, как ожидалось ...
Я чувствую, что упускаю что-то тривиальное, и все же я в полной растерянности ... Пожалуйста, помогите?
Дополнительная информация: Изменение с:
dynamic fc = System.Activator.CreateInstance(t, false);
на:
var fc = System.Activator.CreateInstance(t, false) as SAPFunctionsOCX.SAPFunctions;
не имеет значения. c1 по-прежнему работает, а c2 - нет.
Дополнительная информация # 2: Изменение свойств самого FC также работает в обоих случаях.