У меня есть элемент управления 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 = "";
Последняя строка выполняется и выдает то же исключение !!!Заменить с2 на с1 работает, как и ожидалось ...
Мне кажется, что я упускаю что-то тривиальное, и все же я в полной растерянности ... Пожалуйста, помогите?
Дополнительная информация: Изменение:
dynamic fc = System.Activator.CreateInstance(t, false);
до:
var fc = System.Activator.CreateInstance(t, false) as SAPFunctionsOCX.SAPFunctions;
Не имеет значения.c1 все еще работает, а c2 все еще не работает.
Дополнительная информация # 2: Изменение свойств на самом FC также работает в обоих случаях.