需求:在包含泛型T的類或方法中,想要根據T的具體類型,進行相應的處理,需求偽代碼如下:
public void Test<T>()
{
if(T is string)
{
// do something
}
else if (T is Student)
{
// do somthing
}
}
最快捷的辦法:
public void Test<T>()
{
Type t = typeof(T);
if (t.Name.Equals("Student"))
{
// do something
}
}
換一種思路:
如果只是為了解決本文情景下的需求,如果已經能確定T是哪幾種類型,也可以通過傳參來實現if…else分開處理(參數是枚舉類型)。
如果數據是List< T >且內容不為空,可以根據內容Item來反射獲取類型。
重要的參考: