我正在构建一个简单的winforms应用程序,我正在使用n层体系结构,依赖注入(使用简单注入器),实体框架代码优先,存储库和工作单元模式。
基本上,我知道我可以在应用程序的入口点(Program.cs)上注册Container上的对象,但这只适用于可从UI访问的对象,这会排除数据访问层对象。
那么,我如何从业务逻辑层注册对象,因为它是一个类库。
提前致谢。
答案 0 :(得分:2)
您需要区分依赖项和引用。
您说您的UI不应该依赖于您的DataAccessLayer,这是正确的。但这意味着它不应该与SQL Server代码硬连接(举个例子)。但是,并不意味着您无法引用该项目。
要解决您的问题,只需引用UI中的所有项目(这将是您的应用程序的入口点)。
事实是,如果你创建这样的引用:UI =>业务逻辑=>数据访问,您也只是间接地从UI引用数据层。
我已经写了一篇关于这一点的文章,它更详细地解释了它:
https://www.kenneth-truyers.net/2013/05/12/the-n-layer-myth-and-basic-dependency-injection/