【C#】获取泛型<T>的真实类型
需求:在包含泛型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来反射获取类型。
重要的参考: