我有一个使用 IList<T>
作为参数的方法。我需要检查这个 T
对象的类型,然后根据它做一些事情。我试图使用 T
值,但编译器不允许。我的解决办法如下:
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");
}
}
}
肯定有更好的办法。有没有什么方法可以检查传入的 T
类型,然后使用 switch
语句?