Ich habe eine Methode, die ein IList<T>
als Parameter verwendet. Ich muss überprüfen, was der Typ dieses T
Objekts ist, und etwas basierend darauf tun. Ich habe versucht, den T
Wert 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 T
und dann eine switch
Anweisung zu verwenden?