亚洲乱码一卡二卡四卡乱码新区_亚洲乱码中文字幕小综合_亚洲人成电影在线播放_亚洲性色AV一区二区三区_亚洲一区二区三区影院_亚洲中文字幕久久精品无码A_亚洲中文字幕无码专区_伊人热热久久原色播放WWW_在线观看AV永久免费_最新欧洲大片免费在线,欧美日韩成人三级免费看,久久黄色网址,欧美激情内射喷水高潮

首頁(yè)
社區(qū)
課程
招聘
Unity如何反射獲得泛型函數(shù)的地址,?
wx_嗨 2022-12-21 1657

例如:
public sealed class Action<T> : MulticastDelegate
public virtual void Invoke(T obj) { }
利用Il2cppDumper可以獲得具體類型的函數(shù)地址
|-RVA: 0x3A25D14 Offset: 0x3A25D14 VA: 0x3A25D14
|-Action<bool>.Invoke
但是利用il2cpp_class_get_method_from_name獲取Action`1中的Invoke函數(shù)獲取不到0x3A25D14 這個(gè)偏移。
查詢相關(guān)資料,,發(fā)現(xiàn)可以用函數(shù)MakeGenericMethod獲取
public virtual MethodInfo MakeGenericMethod(Type[] typeArguments) { }
但是該函數(shù)的參數(shù)位Type[],,我通過Assembly_GetType("System.Boolean")獲取Type,調(diào)用MakeGenericMethod失敗,,構(gòu)造Array調(diào)用也失敗,,請(qǐng)問要如何構(gòu)造這個(gè)參數(shù),完成Action<bool>.Invoke函數(shù)地址的獲???或者是否有更好方法能夠字節(jié)得到Action<bool>.Invoke的函數(shù)地址?

收藏
1條回答
Niceto 2022-12-26

在 Unity 中,,你可以使用 System.Reflection 命名空間中的 MethodInfo 類來獲取泛型函數(shù)的地址,。

 

下面是一個(gè)例子,展示了如何使用反射獲取泛型函數(shù)的地址:

段落引用
插入代碼using System.Reflection;

 

// 假設(shè)有一個(gè)泛型函數(shù):
void MyGenericFunction<T>(T arg) { }

 

// 使用反射獲取泛型函數(shù)的地址
MethodInfo method = typeof(MyClass).GetMethod("MyGenericFunction");

 

// 獲取泛型函數(shù)的類型參數(shù)列表
Type[] typeArguments = method.GetGenericArguments();

 

// 使用 MakeGenericMethod 方法創(chuàng)建泛型函數(shù)的實(shí)例
MethodInfo genericMethod = method.MakeGenericMethod(typeof(int));

 

在這個(gè)例子中,,我們使用 Type.GetMethod 方法獲取泛型函數(shù)的 MethodInfo 對(duì)象,,然后使用 MethodInfo.GetGenericArguments 方法獲取泛型函數(shù)的類型參數(shù)列表,最后使用 MethodInfo.MakeGenericMethod 方法創(chuàng)建泛型函數(shù)的實(shí)例,。

回復(fù)