2012-03-11 58 views
0

我有一個銀行對象有幾個嵌套的對象/屬性/方法以及包裝COM對象。這個庫的文檔是有限的,我想更改對象中的銀行編號,但我不知道屬性的名稱是什麼,或者在對象樹中有多遠。但是我確實知道該屬性的值爲1231241.如何搜索對象以查找該值並更改它?尋找對象的屬性的值與不知道屬性的名稱

我曾嘗試:

  • 挖通過監視窗口,但對象是巨大的
  • Bug Aid這仍處於測試階段,它停止工作
  • Object Compare但這並不能很好的工作我考慮因爲COM對象

我可能只是得到我的手髒,挖通過觀察窗口,但我想我會看到如果任何人有任何IDE如。我正在尋找一個實用程序來做到這一點。

+0

有關使用'Reflection'什麼?也許你可以通過所有看到這些價值觀的商人,而不需要知道名字。 – 2012-03-11 00:33:22

+0

是否有一個工具可以做到這一點? – 2012-03-11 00:33:56

+1

我不這麼認爲,你需要編寫自己的代碼來檢查對象。此線程也許有幫助:http://stackoverflow.com/questions/5381851/how-to-recursively-iterate-over-properties-of-an-entity – 2012-03-11 00:35:55

回答

1

這裏是我使用Reflection創建了一個樣本,也許可以幫助你:

private static void recurseAndFindProperty(Object obj) { 
    foreach (PropertyInfo pi in obj.GetType().GetProperties()) { 
     if ((pi.PropertyType.IsGenericType && pi.PropertyType.GetGenericTypeDefinition() == typeof(EntityCollection<>))) { 
      IEnumerable collection = (IEnumerable)pi.GetValue(obj, null); 

      foreach (object val in collection) 
       recurseAndFindProperty(val); 
     } else { 
      if (pi.PropertyType != typeof(Descendant)) 
       if ((int)pi.GetValue(obj, null) == 1231241) 
        pi.SetValue(obj, 10, null)); // Change the value. 
     } 
    } 
} 
+0

好的建議沒有找到我要找的東西(我知道它的值在對象中) – 2012-03-12 13:14:21

+0

我認爲有比這更大的問題代碼感謝Erick的幫助 – 2012-03-13 19:51:01

相關問題