我正在尝试使用 IoC 框架创建一个非常简单的应用程序,以便 Fantom afIoc熟悉它。我试过这个...
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 Registry 的生命周期,以及为什么没有将 Version 服务注入到我的 Main 类的第一个版本中。谁能解释一下,好吗?