假设我有一个使用IoC来实现数据访问库的业务对象库。我应该在哪里定义数据访问接口?它属于哪个库?或者它应该只在一个单独的库中用于接口?
答案 0 :(得分:3)
我会定义业务域中的接口。然后,接口的实现将在引用业务域的库中(并由应用程序上下文引用,或由应用程序上下文引用的IoC库引用)。
然后用另一个实现交换一个实现只需要创建另一个库并在应用程序上下文中交换引用。
在.NET项目结构中,它看起来像这样:
域逻辑项目
(什么都没引用)
域模型
存储库接口
IoC服务定位器接口
存储库项目
(参考域逻辑项目)
存储库实现
IoC项目
(参考域逻辑项目)
(参考资料库项目)
IoC服务定位器实施
IoC Bootstrapping
应用项目
(参考IoC项目)
(参考域逻辑项目)
(可能需要参考Repository Project,不确定)
实现与域模型交互的UI