I have a method that uses an IList<T> as a parameter.  I need to check what the type of that T object is and do something based on it.  I was trying to use the T value, but the compiler does not not allow it.  My solution is the following:
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");
        }
    } 
}
There has to be a better way to do this.  Is there some way I can check the type of T that is passed in and then use a switch statement?
 
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    