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, который является общедоступным в реализациях.