我希望我可以使用 RPGLe 进行一些反思。通过反思,我的意思是:“在运行时确定对象能力的过程或机制。”
想象一下你有这个数据结构:
D DS_Format DS Qualified Based(pDS_Format)
D Type 20I 0 Inz(1)
D Label 50A Inz('myLabel')
D Description 5000A Inz('myDescription')
使用反射 api,我可以这样做:
Reflection_ListSubfields(DS_Format);
=> 返回这个数组:{ 'Type', 'Label', 'Description' }
然后,我可以这样做:
Reflection_GetSubfield(DS_Format : 'Label'); => return 'myLabel'
我希望我也可以这样做:
Reflection_GetSubfieldType(DS_Format : 'Label'); => return 'A'
Reflection_GetSubfieldLength(DS_Format : 'Label'); => return 50
Reflection_GetSubfieldPrecision(DS_Format : 'Type'); => return 0
有了这个,我希望我可以做这样的事情(做一些小工作):
SerializeXml(DS_Format); //I build xml with one line of code !
并得到:
<DS_Format>
<Type>1</Type>
<Label>myLabel</Label>
<Description>myDescription</Description>
</DS_Format>
反之, DeserializeXml(myXml);
反射将帮助我构建非常酷的 api。有什么办法吗?