Посредством размышления, могу ли я как-нибудь взглянуть на общий тип List, чтобы увидеть, к какому типу относится коллекция? Например:
У меня есть простой набор бизнес-объектов, производных от интерфейса, например:
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?
Псевдо закодировано (плохо), как это:
foreach(PropertyInfo info in typeof(BusinessEntity).GetProperties())
{
if(info.PropertyType is GenericIList &&
TheNestedTypeInThisList.IsAssignableFrom(IEntityBase)
{
return true;
}
}
Единственный вариант, который я слышал до сих пор, который работает, это вытащить первый элемент из этого списка, а затем посмотреть на его тип. Более простой способ (особенно потому, что я не могу гарантировать, что список не будет пустым)?