Je dois valider un objet pour voir s'il est nul, un type de valeur ou IEnumerable<T>
où T
est un type de valeur. Jusqu'à présent, j'ai:Comment puis-je savoir si le type d'un objet est une sous-classe de IEnumerable <T> pour n'importe quel type de valeur T?
if ((obj == null) ||
(obj .GetType().IsValueType))
{
valid = true;
}
else if (obj.GetType().IsSubclassOf(typeof(IEnumerable<>)))
{
// TODO: check whether the generic parameter is a value type.
}
J'ai trouvé que l'objet est nul, un type de valeur, ou IEnumerable<T>
pour certains T
; comment puis-je vérifier si ce T
est un type de valeur?
est-GetInterfaces suffisamment récursive pour vous dire ne pas besoin de vous inquiéter d'aller le parent les types? –
@Jon: Je le pense, oui. –
Vous n'avez pas besoin de récursivité. Une classe implémente une interface, ou ce n'est pas le cas. C'est une liste plate, indépendamment de la façon dont les interfaces elles-mêmes "héritent" les unes des autres. – Tar