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
这些委托仅在作用域构建时执行一次。
若需要在运行时动态创建实例,请参考注册工厂。
:::

浙公网安备 33010602011771号