首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将对象注入到未在容器中注册的类?

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

Stack Overflow用户
提问于 2018-04-16 11:13:48
回答 1查看 361关注 0票数 0

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

在货柜内,我已登记TA及TC,结核病无须登记。

代码语言:javascript
复制
procedure Project;
var
    a: TA;
begin
    GlobalContainer.RegisterType<TA>.AsSingleton;
    GlobalContainer.RegisterType<TC>.AsSingleton;

    GlobalContainer.Build;
    a := GlobalContainer.Resolve<TA>;
end;

类别定义:

代码语言:javascript
复制
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;

当TB不是由容器管理时,如果我想将TC实例注入TB实例,我应该做什么?在没有登记结核病的情况下可以这样做吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-16 11:35:58

如果TB是在TA.Create中创建的,那么容器就无法访问它,除非您想公开实例,以便向它注入一些东西,但是,您还是要挫败容器的目的,即处理实例创建,包括它们的依赖关系图。

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

现在您有TA和TC已知的集装箱,但不是TB不知道。

将TB注入TA,注册它,当您解析TA时,它将构建完整的对象图。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49855918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档