C# отражение получает поля, которые реализуют определенный универсальный интерфейс и получают доступ к свойству

У меня есть этот интерфейс

public interface IGenericInterface<T>
{
    List<foo> FooList {get ; set;}
}

И класс как-то так

public class SomeClass
{

    private readonly IGenericInterface<Type1> object1;
    private readonly IGenericInterface<Type2> object2;

    public SomeClass(IGenericInterface<Type1> object1, IGenericInterface<Type2> object2)
    {
        this.object1 = object1;
        this.object2 = object2;
    }

    public void DoSomething()
    {
          // code...
          GetLists(this) //the idea is to extract to static class
    }

    private List<foo> GetLists(object aClass)
    {
        //The idea here is with reflection get all the fields but I only want to get the ones that implements IGenericInterface
         var fields = aClass.GetType().GetFields(BindingFlags.Instance | BindingFlags.NonPublic);
         //each field that implement generic interface, get the items from fooList.
    }
}

Я не знаю, как реализовать метод GetLists для возврата сводного списка. Я имею в виду, как перебирать поля, получить то, которое реализует IGenericInterface, и получить доступ к FooList, который является общедоступным в реализациях.

0 ответов

Другие вопросы по тегам