mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-06 02:35:40 +08:00
Modify add allMembers function param type and add class MembersType in ReflectionFactory
This commit is contained in:
@@ -237,11 +237,11 @@ class YukiMemberHookCreater(@PublishedApi internal val packageParam: PackagePara
|
||||
*
|
||||
* - ❗此方法已弃用 - 在之后的版本中将直接被删除
|
||||
*
|
||||
* - ❗请现在转移到 [MethodFinder]
|
||||
* - ❗请现在转移到 [MethodFinder] 或 [allMembers]
|
||||
* @param name 方法名称
|
||||
* @return [ArrayList]<[MethodFinder.Result.Instance]>
|
||||
*/
|
||||
@Deprecated("请使用新方式来实现 Hook 所有方法", ReplaceWith(expression = "method { this.name = name }.all()"))
|
||||
@Deprecated(message = "请使用新方式来实现 Hook 所有方法", ReplaceWith(expression = "method { this.name = name }.all()"))
|
||||
fun allMethods(name: String) = method { this.name = name }.all()
|
||||
|
||||
/**
|
||||
@@ -249,11 +249,14 @@ class YukiMemberHookCreater(@PublishedApi internal val packageParam: PackagePara
|
||||
*
|
||||
* - ❗此方法已弃用 - 在之后的版本中将直接被删除
|
||||
*
|
||||
* - ❗请现在转移到 [ConstructorFinder]
|
||||
* - ❗请现在转移到 [ConstructorFinder] 或 [allMembers]
|
||||
* @return [ArrayList]<[ConstructorFinder.Result.Instance]>
|
||||
*/
|
||||
@Deprecated("请使用新方式来实现 Hook 所有构造方法", ReplaceWith(expression = "constructor().all()"))
|
||||
fun allConstructors() = constructor().all()
|
||||
@Deprecated(
|
||||
message = "请使用新方式来实现 Hook 所有构造方法",
|
||||
ReplaceWith(expression = "allMembers(MembersType.CONSTRUCTOR)", "com.highcapable.yukihookapi.hook.factory.MembersType")
|
||||
)
|
||||
fun allConstructors() = allMembers(MembersType.CONSTRUCTOR)
|
||||
|
||||
/**
|
||||
* 查找并 Hook [hookClass] 中的全部方法、构造方法
|
||||
@@ -263,11 +266,14 @@ class YukiMemberHookCreater(@PublishedApi internal val packageParam: PackagePara
|
||||
* - ❗警告:无法准确处理每个方法的返回值和 param - 建议使用 [method] or [constructor] 对每个方法单独 Hook
|
||||
*
|
||||
* - ❗如果 [hookClass] 中没有方法可能会发生错误
|
||||
* @param type 过滤 [Member] 类型 - 默认为 [MembersType.ALL]
|
||||
*/
|
||||
fun allMembers() {
|
||||
fun allMembers(type: MembersType = MembersType.ALL) {
|
||||
members.clear()
|
||||
hookClass.instance?.allConstructors { _, constructor -> members.add(constructor) }
|
||||
hookClass.instance?.allMethods { _, method -> members.add(method) }
|
||||
if (type == MembersType.ALL || type == MembersType.CONSTRUCTOR)
|
||||
hookClass.instance?.allConstructors { _, constructor -> members.add(constructor) }
|
||||
if (type == MembersType.ALL || type == MembersType.METHOD)
|
||||
hookClass.instance?.allMethods { _, method -> members.add(method) }
|
||||
isHookMemberSetup = true
|
||||
}
|
||||
|
||||
|
@@ -51,6 +51,20 @@ internal typealias MethodCondition = MethodFinder.() -> Unit
|
||||
/** 定义 [ConstructorFinder] 方法体类型 */
|
||||
internal typealias ConstructorCondition = ConstructorFinder.() -> Unit
|
||||
|
||||
/**
|
||||
* 定义一个 [Class] 中的 [Member] 类型
|
||||
*/
|
||||
enum class MembersType {
|
||||
/** 全部 [Method] 与 [Constructor] */
|
||||
ALL,
|
||||
|
||||
/** 全部 [Method] */
|
||||
METHOD,
|
||||
|
||||
/** 全部 [Constructor] */
|
||||
CONSTRUCTOR
|
||||
}
|
||||
|
||||
/**
|
||||
* 当前 [Class] 是否有继承关系 - 父类是 [Any] 将被认为没有继承关系
|
||||
* @return [Boolean]
|
||||
|
Reference in New Issue
Block a user