我正在为Delphi评估现有的依赖注入库,并且由于其简单而确定了这个delphidicontainer - 它只需要一个unit file!
然而,有一点我不明白 - 在底部this example file:
initialization
//with those lines the linked will include the actual code for the services
TCSVDataService.Register;
TPaddedDataService.Register;
这些Register
方法是空的,但是,如果我在初始化部分中注释掉这两行,DIContainer.Get('dataservice') as TDataService
将会失败。
为什么呢?这些空方法是什么?
答案 0 :(得分:7)
Delphi编译器非常智能,在编译/链接代码时会尝试消除未使用的代码,因此从编译器的角度来看,示例中的实现类(例如TCSVDataService
)是没有在程序中的任何地方使用,并将被删除,所以这些空方法调用是为了防止这种情况发生。