У меня есть метод, который использует параметр IList<T>
в качестве параметра. Мне нужно проверить, что такое объект T
и сделать что-то на его основе. Я пытался использовать значение T
, но компилятор не разрешает его. Мое решение таково:C# Общие сведения и проверка типов
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
?
Я лично хотел бы знать, что вы делаете специальные для каждого типа данных. Если вы делаете примерно одно и то же преобразование для каждого типа данных, может быть проще сопоставить различные типы с общим интерфейсом и работать с этим интерфейсом. – Juliet