C # Cast Object в общем списке - PullRequest
1 голос
/ 15 марта 2019

У меня есть объект со свойствами. Некоторые свойства являются общим списком. Например 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
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...