更新 HowToUseWeaklyScripts
+16
-1
@@ -29,4 +29,19 @@
|
||||
单例对象允许进行嵌套,配合第二点,单例可以直接套娃式递增,配合第四点,单例将不仅限于隐式生成单个对象。
|
||||
超级单例支持动态的切换单例对象,并将这个新的单例呈现在全局;比如希望创建一个唯一的对话框,并立刻将这个对话框作为前台提交到全局,使用完毕后再回到默认单例上。
|
||||
|
||||
|
||||
## [软接口 SoftInterface](../wiki/SoftInterface)
|
||||
|
||||
软接口利用反射完成对目标字段,属性,方法的识别。
|
||||
如果这些对象的名称都几乎一致,但由于各种原因,导致没有或无法使用同一个基类来控制这些字段;比较常见的是一些繁琐,数据量,接口数量庞大的项目中,如果反复用继承去控制这些相似的字段,那么代码复杂度反而会上升,使用接口有可能会导致某些情况下字段被分隔开。
|
||||
简单来说就是常规用法下,继承和接口都会有颗粒度控制不够精细的问题。
|
||||
而使用反射,特别是一个用法简单的反射是比较好的。
|
||||
|
||||
1. 访问字段或属性
|
||||
在希望访问的接口实例上使用 `GetSoftInterface` 来访问特定名称的成员,如果没有这个成员,那么会返回空,如果有,那么方法的 `out object value` 会返回这个值。你也可以使用 `GetSoftInterface<T>` 来访问,这样返回的值会先尝试转为 T 类型,如果转换失败,也会返回false,表示返回类型限定错误。
|
||||
2. 批量访问字段或属性
|
||||
当接口实例是一个数据集合时,可以使用 `GetSoftInterfaces` 来访问它们,这会直接将里面特定名称的成员输出为新的枚举器集合。
|
||||
3. 访问方法
|
||||
在被调用方法的实例上使用 `InvokeSoftMethod` 来调用指定名称的方法,或使用 `MacroReflection.InvokeSoftMethod<T>` 来调用到类上的静态方法。
|
||||
当用方法作为接口时,需要明确输入参数,输出参数,和方法名称。在软接口中,带有ref标记的参数会同时被认为是输入参数和输出参数,而out标记的参数则只被认为是输出参数,在使用类型限定时,首先需要指定函数返回值,如果是void,则直接指定后续的out参数类型即可。
|
||||
参数类型可以是目标方法上指定类型的基类,但如果同时有多个方法的参数与指定名称匹配,则会返回多个匹配对象,但默认只会调用找到的第一个方法。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user