Ищите значение в свойстве Object, не зная имени свойства - PullRequest
0 голосов
/ 11 марта 2012

У меня есть Bank Object, который имеет несколько вложенных объектов / свойств / методов, а также обернутый вокруг com-объекта. Эта библиотека содержит ограниченную документацию, и я хочу изменить банковский номер в объекте, но я понятия не имею, как называется свойство или как далеко вниз в дереве объектов. Однако я знаю, что значение свойства равно 1231241. Как я могу найти объект по этому значению, чтобы найти и изменить его?

Я пробовал:

Возможно, мне просто нужно испачкать руки и копаться в окне часов, но я подумала, что посмотрю, есть ли у кого-нибудь идеи. Я ищу утилиту для этого.

1 Ответ

1 голос
/ 11 марта 2012

Вот пример, который я создал с помощью 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.
       }
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...