假设我有,我已经通过Activator.CreateInstance实例化一个COM对象:C#COM通过MethodInfo.Invoke进行互操作:int *参数?
object obj = Activator.CreateInstance(myGuid);
现在,我知道这个对象有接受一个int *的函数作为参数:
virtual void Method(int * outParameter) = 0;
此方法只是将一个整数写入outParameter。在C++中,我这样做:
int parameter = 0;
obj->Method(¶meter);
// parameter now contains the result.
我该怎么办通过MethodInfo.Invoke在C#中的相同呢?
MethodInfo method = obj.GetType().GetMethod("Method", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
method.Invoke(obj, ???); // What do I put here?
用OleView打开您的COM DLL,并向我们显示您的Method的确切签名,如IDL中所定义。我希望它看起来像'HRESULT方法([out] int * p)'我的答案适用。 – Noseratio