2009-07-21 1 views
0

У меня есть метод, который принимает наблюдаемую коллекцию (возвращенную из веб-службы) объектов и анализирует их в соответствии с их атрибутами.Не удается получить доступ к полям Object с помощью fieldinfo

Вот фрагмент кода из метода

частный двойной анализ (ObservableCollection mobjColl) {

 FieldInfo fi = null; 

     foreach (MyApp.MyObj oi in mobjColl) 
     { 

     if(oi.pressure.Equals("high"){ 

      fi = oi.GetType().GetField("air"); 

      ..... 
     } 
     } 
     return someval; 
    } 

Моя проблема заключается в том, что FieldInfo ц всегда нуль. Я могу получить доступ к каждому полю объекта (внутри foreach), используя имя объекта, но объект fieldinfo никогда не заселен. Я даже попытался использовать метод GetFields, но он не возвращает массив ...

P.S: поля объектов являются общедоступными. Использование bindflags в getfield тоже не помогло.

ответ

1

Я не верю, что объекты, возвращенные из веб-служб, выставляют публичные поля. Возможно, вы думаете о свойствах. Если вы попробуете GetProperty("air"), вы, вероятно, получите что-то обратно.

+0

, которая работала .... спасибо – 2009-07-21 16:22:14

1

GetField/GetFields without BindingFlags искать только открытые поля. Я предполагаю, что «воздух» - это частное поле.

Вместо этого попробуйте:

oi.GetType().GetField("air", BindingFlags.Instance | BindingFlags.NonPublic);

+0

Привет ,, Я забыл упомянуть ... поля являются общедоступными .. Я пытался использовать обязательные флаги, но это не работало либо ..... спасибо – 2009-07-21 15:48:25

0

ли воздух частное поле? Если это так, вам придется использовать перегрузку ПолучитьПолеЗаголовка, который принимает параметр BindingFlags и указать непубличный

fi = oi.GetType().GetField("air", BindingFlags.NonPublic | BindingFlags.Instance); 
0

Если поле не является публичным, то, возможно, придется использовать BindingFlags, как по умолчанию только открытые поля включены.

fi = oi.GetType().GetField("air", BindingFlags.Instance | BindingFlags.NonPublic); 

 Смежные вопросы

  • Нет связанных вопросов^_^