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 @Observed装饰问题咨询
254浏览 • 1回复 待解决
HarmonyOS ArkTS 如何实现自定义装饰
188浏览 • 1回复 待解决
HarmonyOS @Concurrent装饰报错
259浏览 • 1回复 待解决
HarmonyOS 装饰问题class
223浏览 • 1回复 待解决
HarmonyOS eventHub创建方式咨询
266浏览 • 1回复 待解决
HarmonyOS 装饰数据变化监听
59浏览 • 1回复 待解决
装饰 @Styles 和 @Extend
673浏览 • 1回复 待解决
HarmonyOS 关于组件装饰的问题
320浏览 • 1回复 待解决
HarmonyOS 蒙层护眼模式方案咨询
141浏览 • 1回复 待解决
HarmonyOS 装饰不刷新问题
375浏览 • 1回复 待解决
HarmonyOS 怎么自定义装饰
194浏览 • 1回复 待解决
@Track装饰有什么作用?
948浏览 • 1回复 待解决
HarmonyOS 自定义注解类的实现方案
199浏览 • 1回复 待解决
HarmonyOS 是否支持自定义装饰
383浏览 • 1回复 待解决
HarmonyOS 注解功能
221浏览 • 1回复 待解决
是否支持自定义装饰
2271浏览 • 1回复 待解决