2013-11-01 90 views
0

如果我有一個COM對象(Activator.CreateInstance實例化)暴露其它對象作爲屬性,像C#反思 - COM對象

Object1.Object2.Object3

我怎樣才能得到Object3如果我只有一個實例Object1使用反射?

回答

3

如何獲取Object3如果我只有一個使用反射Object1的實例?

這是不可能的。您需要首先通過反射獲取Object2實例,然後才能訪問Object3。如果你有其他一些對象參照Object3,那可能是可能的。

順便說一句,如果您使用.NET 4.0或更高版本,您可能會發現dynamic關鍵字可能爲處理COM對象和反射時節省很多麻煩。看看這裏:http://msdn.microsoft.com/en-us/library/vstudio/dd264736.aspx

+0

是啊,我一直在閱讀關於'動態'晚綁定的奇蹟在4.0,但不幸的是,我在.NET 3.5 ... :( – ferc

+0

哦,對不起,在這裏, 。順便說一句,你可以使用VB.NET,它與C#沒有相同的嚴格類型。在VB.NET中處理COM對象比在C#中處理(在動態關鍵字之前)要容易得多。你可以把這個邏輯封裝成一個用VB.NET編寫的.NET程序集,你的代碼可以訪問其他部分,如果你不能這樣做,那麼恐怕你必須爲核心思考做好準備。 –