mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-04 09:45:19 +08:00
Modify add allMembers function param type and add class MembersType in ReflectionFactory
This commit is contained in:
@@ -8,6 +8,62 @@
|
||||
|
||||
> 这是自定义 `Member` 和 `Class` 相关功能的查找匹配以及 `invoke` 的封装类。
|
||||
|
||||
### MembersType [class]
|
||||
|
||||
```kotlin
|
||||
enum class MembersType
|
||||
```
|
||||
|
||||
**变更记录**
|
||||
|
||||
`v1.0.93` `新增`
|
||||
|
||||
**功能描述**
|
||||
|
||||
> 定义一个 `Class` 中的 `Member` 类型
|
||||
|
||||
#### ALL [enum]
|
||||
|
||||
```kotlin
|
||||
ALL
|
||||
```
|
||||
|
||||
**变更记录**
|
||||
|
||||
`v1.0.93` `新增`
|
||||
|
||||
**功能描述**
|
||||
|
||||
> 全部 `Method` 与 `Constructor`。
|
||||
|
||||
#### METHOD [enum]
|
||||
|
||||
```kotlin
|
||||
METHOD
|
||||
```
|
||||
|
||||
**变更记录**
|
||||
|
||||
`v1.0.93` `新增`
|
||||
|
||||
**功能描述**
|
||||
|
||||
> 全部 `Method`。
|
||||
|
||||
#### CONSTRUCTOR [enum]
|
||||
|
||||
```kotlin
|
||||
CONSTRUCTOR
|
||||
```
|
||||
|
||||
**变更记录**
|
||||
|
||||
`v1.0.93` `新增`
|
||||
|
||||
**功能描述**
|
||||
|
||||
> 全部 `Constructor`。
|
||||
|
||||
### ~~hookClass [field]~~ <!-- {docsify-ignore} -->
|
||||
|
||||
**变更记录**
|
||||
|
@@ -230,12 +230,12 @@ injectMember {
|
||||
|
||||
`v1.0.93` `作废`
|
||||
|
||||
请使用 `constructor().all()` 来取代它
|
||||
请使用 `allMembers(MembersType.CONSTRUCTOR)` 来取代它
|
||||
|
||||
#### allMembers [method]
|
||||
|
||||
```kotlin
|
||||
fun allMembers()
|
||||
fun allMembers(type: MembersType)
|
||||
```
|
||||
|
||||
**变更记录**
|
||||
|
@@ -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