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
相关问题
HarmonyOS eventHub创建方式咨询
151浏览 • 1回复 待解决
HarmonyOS @Concurrent装饰报错
0浏览 • 1回复 待解决
HarmonyOS 装饰不刷新问题
185浏览 • 1回复 待解决
装饰 @Styles 和 @Extend
409浏览 • 1回复 待解决
HarmonyOS 是否支持自定义装饰
248浏览 • 1回复 待解决
HarmonyOS 点播视频播放选型咨询
236浏览 • 1回复 待解决
@Track装饰有什么作用?
741浏览 • 1回复 待解决
HarmonyOS 计步传感相关问题咨询
217浏览 • 1回复 待解决
是否支持自定义装饰
2107浏览 • 1回复 待解决
Aspect工具装饰的使用示例
2025浏览 • 2回复 待解决
HarmonyOS 如何自定义注解
235浏览 • 1回复 待解决
HarmonyOS 模拟如何验证设置网络
129浏览 • 1回复 待解决