假設我有,我已經通過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