Tengo un método que usa un IList<T>
como parámetro. Necesito comprobar cuál es el tipo de ese objeto T
y hacer algo basado en él. Intentaba usar el valor T
, pero el compilador no lo permite. Mi solución es la siguiente:C# Generics and Type Checking
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");
}
}
}
Tiene que haber una forma mejor de hacerlo. ¿Hay alguna manera de que pueda verificar el tipo de T
que se transfiere y luego usar una declaración switch
?
yo personalmente me gustaría saber lo que estás haciendo especial para cada tipo de datos. Si realiza aproximadamente la misma transformación para cada tipo de datos, podría ser más fácil asignar diferentes tipos a una interfaz común y operar en esa interfaz. – Juliet