当我使用依赖注入容器(Spring4D)构建应用程序时,我想知道容器是否正确构建。在这个情况下:
GlobalContainer.RegisterType<TApp>;
GlobalContainer.RegisterType<TMyForm>;
GlobalContainer.Build;
如果 TMyForm 从 Vcl.Forms.TForm 继承,则容器将建立,但应用程序将无法工作,因为实际上 TMyForm 根本没有注册。我想知道是否有可能验证构建过程。特别是解析器会解析我认为应该的构造函数,而不是默认的构造函数吗?
我尝试过这样的事情:
var
registeredTypes: Spring.Collections.IEnumerable<TComponentModel>;
registeredType: TComponentModel;
begin
GlobalContainer.RegisterType<TApp>;
GlobalContainer.RegisterType<TMyForm>;
GlobalContainer.Build;
registeredTypes := GlobalContainer.Kernel.Registry.FindAll;
for registeredType in registeredTypes do
begin
if not GlobalContainer.Kernel.Registry.HasService(registeredType.ComponentTypeInfo) then
raise Exception.Create('Build Error');
end;
但这远非理想。