我的公司有一個內部C#庫,我試圖使用win32com從CPython 2.7調用。我們有一個對象,我將調用Type1,它位於C#命名空間中,我將稱其爲Company.System.SubSystem1。這個對象的一個特定方法(我們稱之爲GetCurrentType2Object)返回一個類型爲Company.System.SubSystem2.Type2的對象。我的代碼如下:win32com COM方法調用返回對象類型的名稱而不是對象
import win32com.client
type1_object = win32com.client.Dispatch("Company.System.SubSystem1.Type1")
type2_object = type1_object.GetCurrentType2Object()
問題是type2_object沒有被賦值爲Type2對象;它得到字符串「Company.System.SubSystem2.Type2」。
對於返回void,整數或枚舉值的同一對象還有其他方法,並且這些方法都顯得成功。沒有其他方法可以返回一個類的類型供我去嘗試,這是唯一的方法。
我試過在運行我的代碼之前在庫中使用makepy.py腳本,並且在得到這些之前它有它自己的問題;生成的文件似乎包含實際接口的一小部分,它不包含我需要的許多方法。微軟COM對象查看器顯示相同的子集,所以我不能責怪這個腳本,我放棄了試圖找出它。
我知道IronPython,我可能最終只是使用它而不是,因爲這將是一個非常迂迴的工作與.NET代碼的方式,但我真的很想了解這裏發生了什麼我做出任何決定,只是爲了滿足自己的好奇心。