【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