Necesito validar un objeto para ver si es nulo, un tipo de valor o IEnumerable<T>
donde T
es un tipo de valor. Hasta ahora tengo:¿Cómo puedo averiguar si el tipo de un objeto es una subclase de IEnumerable <T> para cualquier tipo de valor 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.
}
por lo que he encontrado que el objeto es nulo, un tipo de valor, o por alguna IEnumerable<T>
T
; ¿Cómo puedo verificar si ese T
es un tipo de valor?
Es GetInterfaces suficientemente recursivo que significa que no es necesario que preocuparse de ir hasta el padre tipos? –
@Jon: Creo que sí, sí. –
No necesita ninguna recursión. Una clase implementa una interfaz o no. Es una lista plana, independientemente de cómo las interfaces se "heredan" entre sí. – Tar