2012-10-06 36 views
0

我無法弄清楚這個代碼是怎麼處理的。 「命令」= Park,並且Park方法存在於界面中。然而,「方法」只是等於空,所以當我點擊調用時它會拋出一個異常。調試器開始了,所以我能夠確保一切都看起來不錯。爲什麼方法不能設置?反射並不反映在C接口中的方法#

定義範圍對象。這是一個COM對象。我擴大了範圍對象的動態視圖,它顯示的是屬性或其他東西(藍色3D盒子,不是手和紙),沒有方法。這是問題嗎?但是爲什麼呢,因爲我指的是ITelescope,在我嘗試調用未設置的方法之前,不要對範圍做任何事情。

我從this question獲得激活碼。

ITelescope scope = (ITelescope)Activator.CreateInstance(Type.GetTypeFromProgID(scopeProgID)); 
var method = typeof(ITelescope).GetMethod(command); 
method.Invoke(scope, new object[0]{ }); 
+0

如果在「ITelescope」界面中定義了名爲'「Park」'的方法,那麼您的代碼應該可以找到它。請注意,名稱區分大小寫,並確保名稱周圍沒有前導或尾隨空格。 – dasblinkenlight

回答

0

我記得我曾問過another question關於接口和反射。這個問題與互操作類型有關。要修復它,請右鍵單擊項目引用列表中的違規引用,單擊屬性,然後將「嵌入interop類型」設置爲false。