问题标签 [zenject]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
24 浏览

unity3d - 如何使用 Zenject 将多个实例绑定到多个实例?

从文档中:

每个依赖注入框架最终都只是一个将类型绑定到实例的框架。

但是有可能(并且有意义)将一个类的x 个实例映射到另一个类的x 个实例吗?

例如:

在我的示例中,该方法Main实例化了 3 个不同的实例Something并将一个新实例“绑定”IntValueObject到每个实例中。我将如何使用 Zenject 来解决这个问题?

0 投票
1 回答
68 浏览

c# - Unity & Zenject - 如何从 TSignal.Fire() 中按顺序执行方法

我正在尝试学习如何使用 Zenject 和 unity,我遇到了一个特殊问题,我不知道它是否有可能仅使用 Zenject 的 api 的解决方案。

假设我有 MethodA、MethodB 和 MethodC,以及一个 SignalA。

是否可以制作这个序列:

现在我有这段代码:

MethodA 看起来像这样:

所以预期的结果是 MethodB 和 MethodC 永远不会被执行。

但实际结果是所有的Methods都被执行了。

有没有使用 Zenject 的 api 来实现这一点的解决方案?

感谢您的帮助,如果需要更多信息,我很想知道。

0 投票
1 回答
101 浏览

unity3d - Zenject:MonoBehaviour 注入

我是 Zenject 的新手,这是我使用此资产的第一个项目。我有注射问题!也许有人知道我做错了什么或错误可能在哪里。在下面的代码中,_spawnArea 未初始化。

预先感谢您寻找解决方案的答案或方向

0 投票
0 回答
24 浏览

c# - 在子容器中查找依赖项(在 Zenject 中)

您好,我在 zenject 中面临以下问题。我有一个在 ProjectContext 中注册的状态机及其工厂。接下来,我启动一个使用 SceneContext 加载场景的状态,并在那里注册我的依赖项。之后,我需要运行一个需要根容器(ProjectContext)和场景子容器(SceneContext)依赖的状态,问题就来了。由于我在根容器中创建了状态机和工厂,所以在创建状态实例时,根容器找不到子容器中注册的依赖,导致报错。实例化状态时,如何告诉容器在所有子容器中查找依赖项?

0 投票
1 回答
42 浏览

c# - 在 ProjectContext 上使用 Zenject FromSubContainerResolve 到 SceneContext

我有一个 Unity + Zenject 设置,其中ProjectInstaller包含一些遵循“模态”界面的全局依赖项,例如,

有些模态只与某些场景相关,所以我将它们绑定在SceneInstaller

我想管理在项目范围内定义的单一的所有模式。ModalManager所以它有一个List<Modal>绑定:

当我运行它时,ModalManager只有一个模式:在项目范围内定义的模式。据我了解,SceneContext它是ProjectContext. 所以我应该能够在子场景中使用FromSubContainerResolve绑定ProjectInstaller项目,也许通过添加如下行:

但我不确定这 11FromSubContainerResolve种方法中的哪一种对这种情况有意义。它们似乎都与具有游戏对象上下文的预制件相关,而不是ProjectContext.

这个用例有意义吗?有没有更简单或更好的方法?

0 投票
0 回答
20 浏览

unity3d - zenject 中的容器与上下文。装饰图案

上下文定义了可以从哪里访问依赖项,从而定义应用程序的“层”。projectContext 用于创建项目范围的全局依赖项,因此可以从任何地方访问,sceneContext 是下一个,因此所有 projectContext 依赖项都将可用,但反之则不行。我将其理解为一种访问修饰符,例如public,private等,但根据统一世界,显然没有编译警告,而是运行时错误。

容器与上下文:

据我了解,上下文通过子容器实现了这种访问模块化,因为我们可以在同一上下文中拥有子容器,并且容器可以由不同的上下文共享,那么概念上的区别是什么?据我了解,上下文是框架根据统一世界建议的“规范”或标准层,因此您有上下文 monobehvaiour 类来根据统一的哲学 Project->Scene->Gameobject 在编辑器中定义这些层...等等。容器是依赖包本身,根据 continer 层次结构处理依赖项的访问并保存依赖项处理的所有功能,因为绑定仅对容器本身及其子项可见. 所以上下文确实为这个层提供了容器的可变性。

据我了解,如果在场景上下文中定义,在装饰器上下文中定义的绑定除了有机会看到每个场景的安装程序、预制件、可编写脚本等之外没有任何区别。

根据这个推理,我不明白装饰器上下文的目的,具体来说就是容器与场景上下文共享这一事实。这只是为了在编辑器中查看每个场景中出于某种审美目的而装饰了哪些类,还是它具有一些架构/功能优势?

0 投票
1 回答
64 浏览

c# - Unity,Zenject 注入在一个类中不起作用,但在另一个类中起作用

第一次尝试使用 Zenject,但它没有在一个类中注入对象。

这是 [Inject] 不起作用的类:

这是安装程序:

这是工作代码:

平台生成器:

平台毁灭者:

任何注射方法都不起作用。试图提取接口并绑定它,在其他所有类中都可以正常工作,但在StaticDisappearing.