HarmonyOS装饰器或注解实现方式咨询

应用中需要注册很多接口的实例到路由服务中,目前采用手动注册的方式,但是后期每增加一个就需要修改初始化方法新增注册代码,可维护性很差,是否可以类似Java中,使用装饰器或注解做到自动注册,无需人为添加代码?这边初步调研是可以实现的,但是存在不生效的问题,部分注解失效,目前测试只能生效成功注册2~3个示例。

HarmonyOS
2024-08-27 14:18:47
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

可以使用ts三方库reflect-metadata获得类似java运行时注解的功能。参考reflect-metadata,reflect-metadata提供的装饰器允许对类和属性和方法做标记,并提供了接口可以在运行时获取标记的信息。

https://gitee.com/openharmony-tpc/openharmony_tpc_samples/tree/master/reflect-metadata#

https://gitee.com/openharmony-tpc/docs/blob/master/OpenHarmony_har_usage.md

可以参考:

ohpm i reflect-metadata 
import "reflect-metadata"; 
// 三方包的能力暴露在Reflect中 
@Reflect.metadata("TargetClass", 'classData') 
  // 标记类,key是"TargetClass", 数据是classData 
class MyClass { 
  @Reflect.metadata("TargetMethod", 'methodData') 
  // 标记方法,key是"TargetMethod", 数据是methodData 
  myMethod(){} 
  @Reflect.metadata("Static", 'staticData') 
  static invoke(){} 
} 
// 运行时获取标记信息 
console.info(Reflect.getMetadata("TargetClass", MyClass));//classData 
console.info(Reflect.getMetadata("TargetMethod", new MyClass(), "myMethod"));//methodData 
console.info(Reflect.getMetadata("Static", MyClass, "invoke"));  // staticData
分享
微博
QQ
微信
回复
2024-08-27 19:07:52
相关问题
@Track装饰有什么作用?
311浏览 • 1回复 待解决
是否支持自定义装饰
1843浏览 • 1回复 待解决
Aspect工具装饰的使用示例
1654浏览 • 2回复 待解决
状态装饰 ui不刷新的问题
2110浏览 • 1回复 待解决
自定义装饰的使用问题
454浏览 • 1回复 待解决
ArkTS是否支持自定义装饰
1902浏览 • 1回复 待解决
AltBeacon在HarmonyOS下的相关实现咨询
91浏览 • 1回复 待解决
重力传感相关问题咨询
52浏览 • 1回复 待解决