【发布时间】:2022-12-05 12:32:46
【问题描述】:
我想要一个类作为另一个类的集合。所以假设我有一个 FooBarCollection,它有一个名为 FooBarItems 的集合。我可以绑定 FooBarCollection 并注入它。问题是为了保持整洁,我也想在 FooBarItem 类中进行一次注入,但为了让它工作,我需要使用 DiContainer 进行实例化,这也有问题:
- 我无法在定义字段的同一行中执行基于 DiContainer 的实例化,因此我需要为集合中的每个项目编写两行代码。我想避免这种冗余,并且取决于记住要为每个项目添加的两行代码。
- 将参数传递给 DiContainer 实例化不是类型敏感的。
那么有什么方法可以:
- 我可以使用 Zenject 来注入 FooBarCollection
- 用一行代码添加 FooBar 集合下的每个 FooBar 项,同时仍然能够在 FoobarItem 中注入一个依赖项 ?
有任何想法吗?
【问题讨论】:
-
当你在谈论一项特定资产时,我无能为力,只是给了我 5 美分。通过纯代码进行 DI 并仅公开回答统一消息所必需的内容不是一种选择吗?或者可以使用 unity 编辑器作为注入器,创建一个可编写脚本的对象作为普通类的集合,然后通过 API 添加它们
-
这些不是我想在可编写脚本的对象中序列化的项目,我认为这甚至不能解决问题,因为我仍然希望注入在这些项目中起作用。我不确定您所说的“通过纯代码进行 DI 并仅公开回答统一消息所必需的内容”是什么意思。但无论如何感谢您的投入。
标签: c# unity3d dependency-injection zenject