0

我的问题是:我可以重新绑定一个实例并在我用 [Inject] 属性注入它的任何地方重新注入它。实例绑定如下:

[SerializeField] private MyClass inst;

public override InstallBindings()
{
    Container.BindInstance(inst);
}

然后,当 inst 发生变化时,我尝试这样做:

Container.BindInstance(inst);
Container.QueueForInject(inst);

但它不起作用,并且像[Inject] private MyClass inst;以前一样注入的 MyClass 类型的每个字段都和以前一样。Mb 我只是误解了这个概念。有可能吗?

4

1 回答 1

2

您可以像这样使用重新绑定:

Container.Rebind<Foo>().FromInstance(foo)

或者:

Container.Unbind<Foo>();
Container.BindInstance(foo);

但是,这种事情被认为是不好的做法。正确使用依赖注入时,绑定只会在安装时添加一次,无需再次更改。这很重要,因为可能已经创建了需要访问稍后对容器所做的更改的对象。

如果您的类的实例在运行时发生更改,那么另一种方法可能是绑定一个包装活动实例的类,然后在它更改时触发事件。

于 2018-10-17T18:01:10.647 回答