Все еще не на 100% уверен в том, что вы хотите, но этот небольшой фрагмент кода (не проверенный) может привести вас на правильный путь (или, по крайней мере, помочь уточнить, что вы хотите).
void ReportValue(String propName, Object propValue);
void ReadList<T>(List<T> list)
{
var props = typeof(T).GetProperties();
foreach(T item in list)
{
foreach(var prop in props)
{
ReportValue(prop.Name, prop.GetValue(item));
}
}
}
c # должен иметь возможность определить, что PeopleList наследуется от List, и обрабатывать это нормально, но если вам нужно иметь PeopleList в качестве универсального типа, то это должно работать:
void ReadList<T>(T list) where T : System.Collections.IList
{
foreach (Object item in list)
{
var props = item.GetType().GetProperties();
foreach (var prop in props)
{
ReportValue(prop.Name, prop.GetValue(item, null));
}
}
}
Обратите внимание, что при этом также будут обрабатываться свойства в производных типах в списке.