0

请先阅读以下主题:

C# 和 Visual Studio 2005 中的程序集之间的循环引用

实现接口解决了我的问题,但没有实现我的目标。

我的目标是只使用来自 UI 层/程序集的 BO 层/程序集。这样我就可以保持干净的层到层参考。

因为我不想在 UI 层/程序集中为 BO 层/程序集和 ORMapper-层/程序集添加引用。

我只想在 UI 层/程序集中使用 BO 层/程序集。

同时有人建议我,只能使用反射,而不是 DI。真的吗?

4

1 回答 1

0

如果您真的坚持将 ORM 层隐藏在 BO 层之后,那么依赖注入应该仍然可以帮助您。请注意,您将无法避免从您的 UI 线程中引用 DI 库,因为那将是您的业务对象的来源。

方法:

  • 创建一个接口,其中包含加载数据以填充User对象的方法
  • 在你的 ORM 项目中实现这个接口
  • 在启动时,使用某种 DI 容器针对接口注册 ORM 实现(阅读您使用的任何 DI 库的详细信息,例如:www.ninject.org 以获得轻量级的东西)
  • User对象提供一个构造函数,该构造函数采用填充接口的实例来加载数据

然后当你需要一个User对象时,你要求 DI 库创建它,DI 库将构造它User并给它一个 ORM 实现的引用。您还必须在 DI 调用中注入一些属性,以便“用户名”和“密码”能够用值完全填充它。

请注意,这并不是 DI 的发明目的……应用程序代码实际上应该直接处理 ORM 以创建/读取/更新/删除业务对象。

于 2009-05-29T07:19:45.753 回答