как работать с out-of-proc COM компонентами?
|
От: |
bh90211
|
|
| Дата: | 10.04.06 12:19 |
|
Оценка: |
|
Есть COM out-of-proc компонент представляющий собой exe файл.
Нужно вызвать его метод.
Пробовал так
Сделал add reference
в рез-те d bin появилаcь Interop.component.dll
System.Reflection.Assembly a = System.Reflection.Assembly.Load("Interop.component");
Type rs1 = a.GetType("SomeClass");
object o = Activator.CreateInstance(rs1);
System.Reflection.MethodInfo mi = rs1.GetMethod("SomeMethod");
UInt32 out = 0;
object[] param = new object[3];
param[0] = 0;
param[1] = 1;
param[2] = out;
object ret = mi.Invoke(o, param);
В рез-те получаю ошибку
Exception has been thrown by the target of an invocation
Если делаю так
rs1.InvokeMember("SomeMethod", System.Reflection.BindingFlags.InvokeMethod, null, o, param);
то получаю ошибку
COM target does not implement IDispatch.
Есть ешё маленькая проблема. Этот COM объект имеет Custom Marshaling
Как правилно вызывать методы таких объектов?
Или может нужно использовать через COM+ ?
Пока на собственное сообщение не было ответов, его можно удалить.