У мене є метод, який використовує 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оператор?