Delphi 如何将对象注入未在容器中注册的类?

Delphi 如何将对象注入未在容器中注册的类?,delphi,dependency-injection,spring4d,Delphi,Dependency Injection,Spring4d,我有三节课。 TA类使用TB, TB类使用TC 在我已注册TA和TC的容器中,TB不需要注册 procedure Project; var a: TA; begin GlobalContainer.RegisterType<TA>.AsSingleton; GlobalContainer.RegisterType<TC>.AsSingleton; GlobalContainer.Build; a := GlobalContaine

我有三节课。 TA类使用TB, TB类使用TC

在我已注册TA和TC的容器中,TB不需要注册

procedure Project;
var
    a: TA;
begin
    GlobalContainer.RegisterType<TA>.AsSingleton;
    GlobalContainer.RegisterType<TC>.AsSingleton;

    GlobalContainer.Build;
    a := GlobalContainer.Resolve<TA>;
end;
当TB不是由容器管理时,如果我想将TC实例注入TB实例,我应该怎么做?
有没有可能不注册TB就可以这样做

如果TB是在
TA.Create
内部创建的,那么容器将无法访问它,除非您想公开实例以便向其中注入一些内容,但是您再次违背了容器的目的,即处理实例创建,包括其依赖关系图

您有这些依赖项(箭头表示“需要依赖项”):TA→ 结核病→ TC

现在容器知道了TA和TC,但没有TB


将TB注射到TA中,注册它,然后在解决TA时,它将构建完整的对象图。

但是在我的项目过程中,我没有访问TB实例的权限。那么容器应该如何向其中注入一些东西呢?DI容器不是一根魔杖。DI为我做了这么多的工作,而不是有时我真的认为它是一根魔杖xD
TA = class
private
    _b: TB;
public
    constructor Create;
end;

TB = class
private
    _c: TC;
public
    procedure SetC(c: TC);
end;

TC = class
public
    data: String;
end;

constructor TA.Create;
begin
    _b := TB.Create;
end;

procedure TB.SetC(c: TC);
begin
    _c  := c;
end;