Вызов метода из другого класса, return is перечисление не дало результатов

#c# #ienumerable

#c# #ienumerable

Вопрос:

cGetComponents.cs

  public class cGetComponents
 {    
    public IEnumerable<Component> EnumerateComponents(object formobj)
    {
      return from field in GetType().GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
             where typeof(Component).IsAssignableFrom(field.FieldType)
             let component = (Component)field.GetValue(formobj)
             where component != null
             select component;
     }
 }
  

Form1.cs

 cGetComponentsobj = new cGetComponents();  
IEnumerable<Component> c = obj.EnumerateComponents(this);
  

Почему c пуст, без результатов? Если я помещу функцию EnumerateComponents() внутри Form1, тогда c имеет некоторые элементы.

Комментарии:

1. Разве это не должно быть from field in formobj.GetType().GetFields()... ?

2. EnumerateComponents<T>(T instance) .. instance.GetType()

3. @JohanP вы правы. Это отсутствовало. Спасибо!