writeClassEncode method
void
writeClassEncode(
- ArkTSOptions generatorOptions,
- Root root,
- Indent indent,
- Class klass,
- Set<
String> customClassNames, - Set<
String> customEnumNames, { - required String dartPackageName,
override
编写dataclass的tolist()方法 toList(): Object[]{ let arr: Object[] = new Array(); arr.push(field1); arr.push(field2); return arr; }
Implementation
@override
void writeClassEncode(
ArkTSOptions generatorOptions,
Root root,
Indent indent,
Class klass,
Set<String> customClassNames,
Set<String> customEnumNames, {
required String dartPackageName,
}) {
indent.newln();
indent.write('toList(): Object[] ');
indent.addScoped('{', '}', () {
indent.writeln('let arr: Object[] = new Array();');
for (final NamedType field in getFieldsInSerializationOrder(klass)) {
final String fieldName = field.name;
final HostDatatype hostDatatype = getFieldHostDatatype(
field,
root.classes,
root.enums,
(TypeDeclaration x) => _arkTSTypeForBuiltinDartType(x));
if (!hostDatatype.isBuiltin &&
customClassNames.contains(field.type.baseName)) {
indent.writeln('''
if (this.$fieldName instanceof Array) {
arr.push(this.$fieldName);
} else {
arr.push(this.$fieldName.toList());
}''');
} else {
indent.writeln('arr.push(this.$fieldName);');
}
}
indent.writeln('return arr;');
});
}