Fantom afIocがそれに慣れるために、IoC フレームワークを使用して非常に単純なアプリを作成しようとしています。私はこれを試しました...
using afIoc
class Main {
Registry registry := IocService([AppModule#]).start.registry
@Inject
myPod::Version? version
Void main() {
echo("version is $version")
}
}
バージョンクラスは
const class Version {
override Str toStr() {
"0.0.1"
}
}
AppModule は
using afIoc
class AppModule {
static Void bind(ServiceBinder binder) {
binder.bind(myPod::Version#)
}
}
コンパイルされますが、印刷されますversion is null
。Main クラスを再定義して問題を修正しました。
using afIoc
class Main {
Registry registry := IocService([AppModule#]).start.registry
Void main() {
version := (myPod::Version) registry.serviceById("myPod::Version")
echo("version is $version")
}
}
しかし、afIoc レジストリのライフサイクルと、メイン クラスの最初のバージョンにバージョン サービスが挿入されない理由を理解したいと思います。誰か説明してくれませんか?