VContainer-registering/register-using-delegate | 注册——注册使用委托

可以通过Lambda表达式、其他方法或类来委托实例的创建过程。

builder.Register<IFoo>(_ =>
{
    var foo = new Foo();
    // 做一些操作;
    return foo;
}, Lifetime.Scoped);

可以像这样解析:

class ClassA
{
    public ClassA(IFoo foo) { /* ...*/ }
}

委托表达式的第一个参数可以使用 IObjectResolver 接口。
通过这个接口可以获取已注册的依赖对象:

builder.Register<IFoo>(container =>
{
    var serviceA = container.Resolve<ServiceA>();
    return serviceA.ProvideFoo();
}, Lifetime.Scoped);

IObjectResolver.Instantiate 方法还可用于生成已执行依赖注入的 GameObject:

builder.Register(container =>
{
    return container.Instantiate(prefab);
}, Lifetime.Scoped);

更多信息参阅容器 API

:::note
这些委托仅在作用域构建时执行一次。
若需要在运行时动态创建实例,请参考注册工厂
:::

posted @   凌雪寒  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示