【C#】获取泛型的真实类型


需求:在包含泛型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来反射获取类型。


重要的参考:

http://stackoverflow.com/questions/557340/how-to-get-the-type-of-t-from-a-member-of-a-generic-class-or-method

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM