【发布时间】:2014-09-04 14:57:27
【问题描述】:
我的解决方案包含 3 个项目 -
Project A - 这是启动项目
Project B - 在Project A 中注入的容器接口、提供程序、帮助程序和实现
Project C - 负责使用 Autofac 解析 IoC。
Project A 包含对Project B 的引用,因为它需要其中的接口。 Project C 包含对 Project A 的引用。
我现在正在尝试实现一个需要使用Project A 中定义的模型的新接口。如果我在Project B 中创建接口,这将导致循环引用,因为Project A 已经引用Project B,所以Project B 不能引用Project A 来使用该模型。
如果我在Project A 中创建接口,那么我无法在没有从Project C 引用Project A 的情况下注册它,因为又是循环的。
我在哪里创建和实现这个接口而不引起循环引用。该接口是一种身份验证管理器提供程序。我可以在我的控制器中创建一个函数来做这些事情,但这很不整洁。
【问题讨论】:
-
为什么
B需要引用A?我假设B是您的应用程序代码,并且由于A是您的主要代码,B不应依赖于A。在不知道为什么B需要知道A的模型的情况下,我唯一的建议是不要这样做。 -
如果我尝试在
B中创建接口,B将需要对A的引用,因为该接口使用A中定义的模型 -
这些是你说的视图模型?
-
是的,这些是视图模型。
-
那我的建议还是一样,给
B自己的model,和A分开,然后在A的项目里面翻译成A的model如果你需要。可能两个模型的格式会不同,最好不要将MVC模型的概念耦合到B的项目中。
标签: c# asp.net asp.net-mvc dependency-injection inversion-of-control