我有一个MVC应用程序,它使用ninject将服务依赖项注入控制器,并且运行良好。但是我也有一些域对象在它们的构造函数中需要这些服务,我想使用ninject解析这些依赖项,但是不想直接在我的域对象程序集中引用ninject。我在这里已经阅读了很多问题和答案,但我仍然不清楚最好的方法。例如,我有一个ShoppingCart域对象,需要传递给其构造函数的IProductCatalogService实例。创建购物车实例的最佳模式是什么?我可以引用根内核并调用它,但这意味着在我的域程序集中引用了ninject。我应该在工厂类中包装对内核的访问吗?
欢迎任何想法或建议!
答案 0 :(得分:1)
在域对象中提供服务通常被认为是不好的做法。我认为你需要重新考虑你想要实现的目标。为什么ShoppingCart需要使用产品目录服务?
从Domain的角度来看,我认为ShoppingCart将由许多“项目”组成,具有总数等属性,并且可能会传递给订购服务。您的控制器操作将通过添加项目,删除项目等来更新购物车域。
如果你真的需要考虑这个选项,那就是使用commonservicelocator。这将分离你对ninject的(直接)依赖。