C# 如何设计Unity容器?
我有三个项目:WebAPI、服务和存储库C# 如何设计Unity容器?,c#,design-patterns,inversion-of-control,unity-container,C#,Design Patterns,Inversion Of Control,Unity Container,我有三个项目:WebAPI、服务和存储库 WebAPI引用了Services,Services引用了Repository 现在我需要为服务和存储库添加一个统一容器,但是在WebAPI中,它不允许添加对存储库的引用,WebAPI只对服务有引用 我知道如何为服务配置unity,但如何为存储库 如何更改此项以获得所需的设计 我的建议是简单地添加另一个项目——将其命名为“基础设施”。然后,这个项目可以全权负责向IoC注册,因此这个项目需要引用包含任何需要注册的项目,WebAPI项目可以调用它 这样Web
WebAPI
引用了Services
,Services
引用了Repository
现在我需要为服务
和存储库
添加一个统一容器,但是在WebAPI
中,它不允许添加对存储库
的引用,WebAPI
只对服务
有引用
我知道如何为服务
配置unity
,但如何为存储库
如何更改此项以获得所需的设计 我的建议是简单地添加另一个项目——将其命名为“基础设施”。然后,这个项目可以全权负责向IoC注册,因此这个项目需要引用包含任何需要注册的项目,WebAPI项目可以调用它
这样WebApi项目就不需要直接了解Respository中的任何内容;它只知道如何获得一个IoC容器,然后所有东西都可以使用它。为什么不能添加对存储库的引用?也许您可以在
服务
中有一个方法,它接受一个Unity容器,并且该方法可以在存储库
中注册依赖项?这里的缺点是,服务
需要有Unity引用,我猜您是在试图避免它?@GPW,因为控制器
与存储库
无关。数据通过服务
到达存储库
,那么就只需要架构决策了吗?很公平。我对这些事情所采取的方法大体上正如我在上面所建议的那样——每个项目都有一个方法,它在其中注册它的依赖关系。类似的替代方案可以是一个完全独立的“基础设施”项目,它引用了每个需要注册依赖项的项目,并且负责向IoC注册所有项目的所有内容(并且仅在启动时由WebApi项目调用)。@GPW,是的,我喜欢你的最后一个想法。请将其作为答案发布,以便投票。我已经这样做了:)