collect method
Future<void>
collect(
- Element element,
- ConstantReader annotation,
- BuildStep buildStep
)
Implementation
Future<void> collect(
Element element, ConstantReader annotation, BuildStep buildStep) async {
if (element.kind == ElementKind.CLASS) {
final interfaceElement = annotation.read("service").typeValue.element;
if (interfaceElement == null) {
return;
}
String implStr = element.declaration!.displayName;
String interfaceStr = interfaceElement.displayName;
final List<String> importList = [];
String implPackagePath = buildStep.inputId.uri.toString();
importList.add(implPackagePath);
importList.add(interfaceElement.librarySource!.uri.toString());
// 每一个服务对应一个实例
EachServiceInfo info = EachServiceInfo(importList, interfaceStr, implStr);
if (!eachServiceInfoMaps.containsKey(interfaceStr)) {
eachServiceInfoMaps[interfaceStr] = info;
} else {
throw Exception("""
================================service.erro============================================
You have registered two identical services, please check for errors!!!!,service:$interfaceStr
=============================================================================================
""");
}
}
}