[Dart笔记]dart:mirror结构分析

591 阅读1分钟

下载Dart SDK源码

github.com/dart-lang/s…

分析dart:mirror结构

生成UML图

  • 配置DCDG工具

github.com/glesica/dcd…

  • 添加pubspec.yaml到dart-sdk-2.13.x/sdk/sdk,与lib平级
  • dart-sdk-2.13.x/sdk/sdk路径下,生成dart:mirror相关类PlantUML图
dcdg -i "^[^_]*Mirror" -o mirrors.puml
  • 替换mirrors.puml中冗余namespace

file:::::::Users::wangkun42::workspace::dart-sdk-2.13.x::sdk::sdk::lib -> dart

dart::mirrors::mirrors.dart -> dart::mirrors

@startuml
set namespaceSeparator ::

class "js_runtime::js_helper.dart::JSInvocationMirror" {
}

"dart::core::Invocation" <|-- "js_runtime::js_helper.dart::JSInvocationMirror"

class "dart::_internal::vm::lib::mirrors_patch.dart::MirrorSystem" {
}

abstract class "dart::mirrors::MirrorSystem" {
}

abstract class "dart::mirrors::Mirror" {
}

abstract class "dart::mirrors::IsolateMirror" {
}

"dart::mirrors::Mirror" <|-- "dart::mirrors::IsolateMirror"

abstract class "dart::mirrors::DeclarationMirror" {
}

"dart::mirrors::Mirror" <|-- "dart::mirrors::DeclarationMirror"

abstract class "dart::mirrors::ObjectMirror" {
}

"dart::mirrors::Mirror" <|-- "dart::mirrors::ObjectMirror"

abstract class "dart::mirrors::InstanceMirror" {
}

"dart::mirrors::ObjectMirror" <|-- "dart::mirrors::InstanceMirror"

abstract class "dart::mirrors::ClosureMirror" {
}

"dart::mirrors::InstanceMirror" <|-- "dart::mirrors::ClosureMirror"

abstract class "dart::mirrors::LibraryMirror" {
}

"dart::mirrors::DeclarationMirror" <|-- "dart::mirrors::LibraryMirror"
"dart::mirrors::ObjectMirror" <|-- "dart::mirrors::LibraryMirror"

abstract class "dart::mirrors::LibraryDependencyMirror" {
}

"dart::mirrors::Mirror" <|-- "dart::mirrors::LibraryDependencyMirror"

abstract class "dart::mirrors::CombinatorMirror" {
}

"dart::mirrors::Mirror" <|-- "dart::mirrors::CombinatorMirror"

abstract class "dart::mirrors::TypeMirror" {
}

"dart::mirrors::DeclarationMirror" <|-- "dart::mirrors::TypeMirror"

abstract class "dart::mirrors::ClassMirror" {
}

"dart::mirrors::TypeMirror" <|-- "dart::mirrors::ClassMirror"
"dart::mirrors::ObjectMirror" <|-- "dart::mirrors::ClassMirror"

abstract class "dart::mirrors::FunctionTypeMirror" {
}

"dart::mirrors::ClassMirror" <|-- "dart::mirrors::FunctionTypeMirror"

abstract class "dart::mirrors::TypeVariableMirror" {
}

"dart::mirrors::TypeMirror" <|-- "dart::mirrors::TypeVariableMirror"

abstract class "dart::mirrors::TypedefMirror" {
}

"dart::mirrors::TypeMirror" <|-- "dart::mirrors::TypedefMirror"

abstract class "dart::mirrors::MethodMirror" {
}

"dart::mirrors::DeclarationMirror" <|-- "dart::mirrors::MethodMirror"

abstract class "dart::mirrors::VariableMirror" {
}

"dart::mirrors::DeclarationMirror" <|-- "dart::mirrors::VariableMirror"

abstract class "dart::mirrors::ParameterMirror" {
}

"dart::mirrors::VariableMirror" <|-- "dart::mirrors::ParameterMirror"

class "dart::mirrors::MirrorsUsed" {
}
@enduml
  • 根据PlantUML文件生成SVG
curl https://plantuml-service.herokuapp.com/svg --data-binary @mirrors.puml -o mirrors.svg

image.png

  • 核心dart:mirrors

image.png