我第一次尝试使用结构图。我之前使用过ioc容器,但总是使用xml配置。由于结构图使用配置代码(我知道它也可以在xml中完成,但大多数示例都是通过代码使用配置)我遇到了一些引用问题。
让我们使用以下示例(不是真实的):
3个装配。
数据层 BusinessLayer 服务
BusinessLayer引用DataLayer(因此它可以检索数据) DataLayer和BusinessLayer都引用了Services程序集,因为它包含用于记录的代码。
我希望Log组件由StructureMap管理,以便我可以更改日志组件。
在业务层中,还有一些组件由StructureMap提供服务。
所以现在我的问题就在了。
我在哪里放置结构图配置?
如果我将它放在BusinessLayer中,DataLayer就无法使用Log组件(因为返回业务层的引用将在循环引用中解析)。我不能把它放在Services项目中,因为BusinessLayer中还有一些组件(业务层有对服务程序集的引用)。
我希望自己能够很好地解释自己。这里的主要问题是StructureMap在配置之前需要对程序集的引用,我觉得这有点问题。我做错了吗?
答案 0 :(得分:3)
容器配置必须位于表示层的顶层:网站,Web服务,控制台应用程序,Windows应用程序或Windows服务。因此,您可以随时随地注入所需的一切。
答案 1 :(得分:0)
我将编程配置(IoC或任何其他)配置在进程级别的引导方法中。因此,在客户端/服务器系统中,客户端进程将为其所需的任何配置提供自己的引导程序,并且服务器进程将为其需要的任何配置提供单独的引导程序方法(这可能是重用的代码,或者它们可能是非常不同的要求)。 例如,客户端引导程序不需要知道DAL配置,服务器引导程序不需要知道任何UI配置。