有没有办法可以将未知对象转换为通用列表,以便通过给定的ProperyName从对象获取项目列表。
对象可以是List<Country>
,List<Area>
或List<Region>
等任何通用列表,但我需要按给定的displayMember
获取数据。
例如:
List<City> listCities = new List<City>(); //Cities data with (CityID, CityName)
object dataSource = listCities;
string displayMember = "CityName";
string valueMember = "CityID";
如何从CityName
对象类型的对象中获取dataSource
的列表?
答案 0 :(得分:8)
基本上你必须使用反射。例如:
// This assumes it really is just a List<T>...
IEnumerable list = (IEnumerable) dataSource;
Type elementType = list.GetType().GetGenericArguments()[0];
PropertyInfo property = elementType.GetProperty(displayMember);
List<object> displayValues = list.Cast<object>()
.Select(v => property.GetValue(v, null))
.ToList();
(您需要添加一堆错误检查 - 例如,property
不是null
...)