99 votes

Comment vérifier si une valeur donnée est une liste générique ?

public bool IsList(object value)
    {
        Type type = value.GetType();
        // Check if type is a generic list of any type
    }

Quelle est la meilleure façon de vérifier si l'objet donné est une liste ou s'il peut être converti en liste ?

135voto

Victor Rodrigues Points 3468

Pour vous qui appréciez l'utilisation des méthodes d'extension :

public static bool IsGenericList(this object o)
{
    var oType = o.GetType();
    return (oType.IsGenericType && (oType.GetGenericTypeDefinition() == typeof(List<>)));
}

Donc, on pourrait le faire :

if(o.IsGenericList())
{
 //...
}

105voto

James Couvares Points 550
using System.Collections;

if(value is IList && value.GetType().IsGenericType) {

}

16voto

Eoin Campbell Points 22861
 bool isList = o.GetType().IsGenericType 
                && o.GetType().GetGenericTypeDefinition() == typeof(IList<>));

7voto

Atif Aziz Points 16967
public bool IsList(object value) {
    return value is IList 
        || IsGenericList(value);
}

public bool IsGenericList(object value) {
    var type = value.GetType();
    return type.IsGenericType
        && typeof(List<>) == type.GetGenericTypeDefinition();
}

5voto

BFree Points 46421
if(value is IList && value.GetType().GetGenericArguments().Length > 0)
{

}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X