如何通過反射動態調用泛型方法


如何通過反射動態調用泛型方法
在調用泛型方法,如果泛型本身也不明確,需要通過反射動態得知的情況下,需要使用如下方法來動態調用泛型了
使用示例
//泛型方法
public class LocalizationManager
{
    public static List<ComboDataVm> TranslateEnumData<TEnum>(string name = "") where TEnum : struct, IComparable, IFormattable, IConvertible
    {
        return null;
    }
}


//--------------------------泛型方法的動態調用示例-------------------
string myName="test";//泛型方法的參數
string typeName="TYPE.Serivces.Dto.MyDto";//泛型的類型FullName,
Type tType=Type.GetType(typeName);//泛型類型,實際應用中,泛型的類型或FullName可通過反射動態獲取

Type locType = typeof(LocalizationManager);//獲取方法所在的class的類型
MethodInfo mi = locType.GetMethod("TranslateEnumData");//獲取方法
MethodInfo dmi=mi.MakeGenericMethod(tType);//獲取泛型方法
var  comboDatas =(List<ComboDataVm>) dmi.Invoke(locType, new object[] { myName });//調用泛型方法並且傳遞參數name,執行方法返回的結果為object,要強制轉換

 


免責聲明!

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



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