Если у меня есть коллекция данного субъекта, я могу получить свойство объекта следующим образом:Получение свойств в дочерних классах в IEnumerable базового класса
var myCollection = new List<Foo>();
entities.GetType().GetGenericArguments()[0].GetProperties().Dump();
Однако, у меня некоторые трудности перечисления свойств, если моя коллекция является IEnumerable базового класса и заполнена производными классами.
public class Foo
{
public string One {get;set;}
}
public class Bar : Foo
{
public string Hello {get;set;}
public string World {get;set;}
}
// "Hello", "World", and "One" contained in the PropertyInfo[] collection
var barCollection = new List<Bar>() { new Bar() };
barCollection.GetType().GetGenericArguments()[0].GetProperties().Dump();
// Only "One" exists in the PropertyInfo[] collection
var fooCollection = new List<Foo>() { new Bar() };
fooCollection.GetType().GetGenericArguments()[0].GetProperties().Dump();
Есть ли способ получить типы предметов в коллекции, даже если коллекция объявлена с использованием базового класса?
вы должны получить тип из фактических значений коллекции итерации, а не компиляция времени. –
Что делать, если в списке есть объекты разных типов? Зачем вам нужны свойства? –