Skip to content

Commit d846fcb

Browse files
committed
更新反射文档
1 parent 7a9eaa2 commit d846fcb

1 file changed

Lines changed: 20 additions & 10 deletions

File tree

docs/manual/reflection.md

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,26 @@ Obfuz与Unity工作流深度集成,已经内置了以下规则:
1515

1616
更多的规则可查看文档[符号混淆](./symbol-obfuscation)。不在默认规则内的类型需要使用下面的特殊的解决办法。
1717

18+
## 运行时反射相关支持
19+
20+
### ObfuscationTypeMapper
21+
22+
Obfuz提供了`Obfuz.ObfuscationTypeMapper`维护混淆前类型全名到类型的映射关系,ObfuscationTypeMapper提供了以下接口:
23+
24+
- `Type GetTypeByOriginalFullName(Assembly assembly, string originalFullName)` 根据原始类型名查找它的Type。
25+
- `string GetOriginalTypeFullName(Type type)` 根据Type获得它的原始类型全名。
26+
- `string GetOriginalTypeFullNameOrCurrent(Type type)` 根据Type获得它的原始类型全名,如果在注册的映射类型字典中找不到该类型,则返回类型的`Type.FullName`值。
27+
28+
### ObfuscationInstincts
29+
30+
Obfuz提供了[ObfuscationInstincts](./obfuscation-instincts)用于获取原始类型名。
31+
32+
ObfuscationTypeMapper用于只知道运行时`Type`变量的情况下获得原始类型名,如果当前位置知道是哪个具体类型,
33+
ObfuscationInstincts提供了更直接的接口获取原始类型名,并不需要注册类型映射。
34+
35+
- `FullNameOf<T>` 返回类型的原始类型命名
36+
- `NameOf<T>` 返回类型的原始类型名,不含命名空间
37+
1838
## 解决混淆后反射找不到类型的问题
1939

2040
### 1. 对需要反射查找的元数据禁用符号混淆
@@ -71,16 +91,6 @@ class MyClass
7191

7292
```
7393

74-
ObfuscationTypeMapper还提供了以下接口:
75-
76-
- `string GetOriginalTypeFullName(Type type)` 根据Type获得它的原始类型全名。
77-
- `string GetOriginalTypeFullNameOrCurrent(Type type)` 根据Type获得它的原始类型全名,如果在注册的映射类型字典中找不到该类型,则返回类型的`Type.FullName`值。
78-
79-
以上两个接口用于只知道运行时`Type`变量的情况下获得原始类型名,如果当前位置知道是哪个具体类型,`ObfuscationInstincts`提供了更直接的接口获取原始类型名,并不需要提前注册类型映射。
80-
81-
- `FullNameOf<T>` 返回类型的原始类型命名
82-
- `NameOf<T>` 返回类型的原始类型名,不含命名空间
83-
8494
### 3. 手动维护原始名称与类型的映射关系
8595

8696
使用类似下面的代码:

0 commit comments

Comments
 (0)