У меня есть объект со свойствами. Некоторые свойства являются общим списком. Например IList<IArticle>
или IList<IProduct>
и т. Д.
Я перебираю все свойства объекта с myObject.GetType().GetProperties()
и ищу свойства типа IList.
Я могу определить свойства IList и хотел бы перебрать список. Но есть моя проблема. Я не могу преобразовать listProperty (который имеет тип объекта) в общий список. Проблема в том, что у свойств разные универсальные типы. Приведение в IList будет работать только для свойства типа IList<IArticle>
, но не для остальных, например IList<IProdukt>
...
Приведение в IList<object>
всегда равно нулю.
Вот пример кода:
foreach (var myProperty in myObject.GetType().GetProperties())
{
//get generic property (type IList)
if (myProperty.PropertyType.IsGenericType)
{
PropertyInfo propInfo = myObject.GetType().GetProperty(myProperty.Name);
Type propType = myObject.GetType().GetProperty(myProperty.Name).PropertyType;
var listProperty = propInfo.GetValue(myProperty);
foreach (var test in (listProperty as IList<???>))
{
//Do some magic
}
}
}