C# de Génériques et de la Vérification de Type

J'ai une méthode qui utilise un IList<T> en tant que paramètre. J'ai besoin de vérifier que le type de l' T objet et en faire quelque chose de basé sur elle. J'ai essayé d'utiliser le T valeur, mais le compilateur ne le permet pas. Ma solution est la suivante:

private static string BuildClause<T>(IList<T> clause)
{
    if (clause.Count > 0)
    {
        if (clause[0] is int || clause[0] is decimal)
        {
           //do something
        }
        else if (clause[0] is String)
        {
           //do something else
        }
        else if (...) //etc for all the types
        else
        {
           throw new ApplicationException("Invalid type");
        }
    } 
}

Il y a une meilleure façon de le faire. Est-il un moyen que je puisse vérifier le type de T qui est passé et ensuite utiliser un switch déclaration?

  • J'aurais personnellement aimé savoir ce que vous êtes en train de faire de spécial pour chaque type de données. Si vous êtes en train de faire à peu près la même transformation pour chaque type de données, il peut être plus facile pour cartographier les différents types d'une interface commune et sur cette interface.
InformationsquelleAutor Jon | 2009-06-11