Через отражение, есть ли какой-то способ взглянуть на общий список, содержащий тип, чтобы узнать, какой тип имеет коллекция? Например:
У меня есть простой набор бизнес-объектов, которые выводятся из интерфейса, например:
public interface IEntityBase{}
public class BusinessEntity : IEntityBase
{
public IList<string> SomeStrings {get; set;}
public IList<ChildBusinessEntity> ChildEntities { get; set;}
}
public class ChildBusinessEntity : IEntityBase{}
В случае, когда я повторяю свойства BusinessEntity посредством отражения, будет ли у меня возможность увидеть, были ли объекты, вложенные внутри этих списков из IEntityBase?
Pseudo закодирован (плохо):
foreach(PropertyInfo info in typeof(BusinessEntity).GetProperties())
{
if(info.PropertyType is GenericIList &&
TheNestedTypeInThisList.IsAssignableFrom(IEntityBase)
{
return true;
}
}
Только тот вариант, который я слышал до сих пор, работает, - это вытащить первый элемент из этого списка, а затем посмотреть его тип. Любой более простой способ (особенно потому, что я не могу гарантировать, что List не будет пустым)?