Ich habe eine Methode, die ein IList<T>als Parameter verwendet. Ich muss überprüfen, was der Typ dieses TObjekts ist, und etwas basierend darauf tun. Ich habe versucht, den TWert zu verwenden, aber der Compiler lässt ihn nicht zu. Meine Lösung lautet wie folgt:
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");
}
}
}
Es muss einen besseren Weg geben, dies zu tun. Gibt es eine Möglichkeit, den Typ der Übergabe zu überprüfen Tund dann eine switchAnweisung zu verwenden?