Par réflexion, y a-t-il un moyen pour moi de regarder le type contenu d'une liste générique pour voir de quel type est la collection? Par exemple:Obtenir le type contenu dans une liste <T> par réflexion?
J'ai un simple ensemble d'objets métier qui dérivent d'une interface, comme ceci:
public interface IEntityBase{}
public class BusinessEntity : IEntityBase
{
public IList<string> SomeStrings {get; set;}
public IList<ChildBusinessEntity> ChildEntities { get; set;}
}
public class ChildBusinessEntity : IEntityBase{}
Dans le cas où j'Itère les propriétés de BusinessEntity par la réflexion, y aurait-il un moyen pour moi de voir si les objets imbriqués dans ces listes dérivées de IEntityBase?
Pseudo codé (mal) comme ceci:
foreach(PropertyInfo info in typeof(BusinessEntity).GetProperties())
{
if(info.PropertyType is GenericIList &&
TheNestedTypeInThisList.IsAssignableFrom(IEntityBase)
{
return true;
}
}
seule option que je l'ai entendu à ce jour, qui fonctionne, serait de retirer le premier élément de cette liste, puis regardez son type . Un moyen plus facile (surtout parce que je ne peux pas être garanti que la liste ne sera pas vide)?
Dupe: http://stackoverflow.com/questions/528546/type-getinterface-and-nested-types –
Pas dupe: cette question est poser des questions sur les types imbriqués, alors que celui-ci (malgré la title) semble s'interroger sur un type générique. – ChrisW
Oups, vous avez raison, mon mauvais: P –