泛型動態實例化


泛型動態實例化需要三個步驟:1.獲得泛型類型,2.指定泛型類型,3.實例化

有如下泛型類型:

namespace NS
{
    class Buy<T>
    {
        public T Amount {get;set;}
    }
}

 

 

則 Buy<T> 實例化步驟如下

1.獲得泛型類型  typeBuy

 方式1     Type typeBuy=typeof(Buy<>);

方式2      Type typeBuy=Type.GetType("NS.Buy`1");

2.指定泛型類型,獲得最終泛型類型 ,如最終類型為 Buy<int>,則最終泛型類型 typeBuyInt 

Type typeBuyInt=typeBuy.MakeGenericType(typeof(int)); //指定泛型類型

3.使用類型 typeBuyInt 進行動態實例化

方式1    Buy<int> buy=typeBuyInt.GetConstructor(new Type[] { }).Invoke(new object[] { });

方式2   Buy<int> buy=Activator.CreateInstance(typeBuyInt);

此處實例化僅為舉例說明,實際使用也不會直接寫出 Buy<int> buy的定義。泛型動態實例化是用於針對泛型的抽象級處理的,有利於簡化架構代碼量,例如ORM架構以泛型緩存所有實體類映射,如果所有實體類型創建在指定命名空間,則ORM架構即可僅通過命名空間就建立出所有實體類的泛型映射。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM