2013-10-02 34 views
1

我有一個用C++編寫的第三方DLL,我無法弄清楚如何獲取它的屬性。我可以通過快速查看來看到它們,但是有太多屬性,我無法使用滾動條移動。可能在6000個物業的某處。我不想一個接一個寫他們,我試圖通過反射來訪問它們,所以我可以把所有這些都放在一個包裏,用戶稍後會選擇顯示什麼和不顯示什麼。對象動態視圖屬性的反射

問題是,這些屬性不知何故不顯示在標準的反射命令下GetProperties();

如果嘗試下面的太見:

PropertyInfo[] pi = o.GetType().GetProperties(); 
MemberInfo[] mi = o.GetType().GetMembers(); 
MethodInfo[] mti = o.GetType().GetMethods(); 

其中沒有包含什麼智能。我通過快速查看發現了 Object/Base/DynamicView下的屬性。

基地將是類型:((System.MarshalByRefObject)(((System.__ComObject)(o))))

知道,我不知道如何使用反射來動態視圖中得到的屬性列表

+1

的可能重複(http://stackoverflow.com/questions/10615019/get-property-names-via-reflection-of- [通過COM對象的反射獲取屬性名稱] an-com-object) –

+0

問題不在於你已經使用'dynamic',而是基礎對象是一個COM對象,它沒有通過反射完全暴露出來.. –

+0

我顯然沒有適當的搜索條件。但派遣編組做了詭計。最後,我結束了8223個屬性,這比我的猜測還要多。只是爲了添加我以前對Com DLL的反射,但是這是第一個動態公開它們的方法和屬性的反射。 – Franck

回答

0

d-士丹利評論指出我在好的方向發展。我從那裏找到了幾條鏈接後的解決方案。沒有完全相同的問題,但足夠接近,它解決了我的問題。

這裏的解決方案:Reflection with IDispatch-based COM objects