![]() |
1
3
虽然您确实可以将参数传递给resolve方法,但是如果这实际上是正确的设计,请仔细考虑。 你为什么一开始就想这么做?是因为您想使用Unity作为服务定位器吗?这是我唯一能想到的原因,但是 I consider this an anti-pattern . DI容器的使用应遵循好莱坞的原则:告诉它 resolve the entire application graph at the Composition Root 然后把这一切都忘了。 在您的特定情况下,您可以保持某些项不变,但如果您希望能够将hashingClass作为依赖项来改变,则需要将其注入到某个项中,并且 构造器注入 是最好的选择。 如果您的应用程序中只需要一个someitem实例,那么您可以像在Unity中那样连接它,但是如果您需要创建多个实例,那么 Abstract Factory is the correct approach . 您的例子就差不多了:您只需要从someitemFactory提取一个接口,并在任何需要创建someitem实例的使用者中依赖于这个isomeitemFactory。 它看起来像是更多的代码,但是代码行在任何情况下(不管是以何种方式)都不是代码质量的特别好的度量标准。但是,这种方法允许您遵循 Single Responsibility Principle 并且独立地改变某个项目的创建和散列。 注意,没有 these principles 专门针对统一,但一般适用于DI。 |
![]() |
2
0
似乎可以将参数传递给Unity的resolve()方法。有关详细信息,请参阅此问题的已接受答案: Can I pass constructor parameters to Unity's Resolve() method? |
![]() |
3
0
你说的团结一致是可以做到的。
在config中,假设您使用的是config文件,则可以
|
![]() |
Nikolay K · Castle Windsor从类内拦截方法调用 9 年前 |
![]() |
user3643376 · Unity ResolveAll泛型接口 9 年前 |
![]() |
Ilias Kouroudis · 绕过Laravel服务提供商 9 年前 |
![]() |
Wojciech Kozaczewski · 实体框架-容器的并发使用 9 年前 |
![]() |
vishal mane · 在不使用容器的情况下从配置进行统一拦截 10 年前 |