我有一個使用IList<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 2009-06-11 19:18:25