1

假设我有以下分层架构......

在此处输入图像描述

我想实现一个需要某种形式的数据访问的方面。堆栈中的每个项目都引用了方面框架。因此,由于循环引用,我不能让方面程序集引用数据访问层。

那么我应该如何在方面内进行数据访问呢?

4

1 回答 1

2

这是使用运行时依赖项解决的。

最好的方法是反转控制模式。

您的数据访问可以实现接口,并且可以在运行时通过使用诸如Castle WindsorNinject等控制框架的反转来解决谁实现了整个接口来检索它们的实现。

您的方面将使用整个接口而不是设计时引用与数据层交互,因此您将避免编译时循环引用。

我想补充一点:运行时依赖解析不是产生循环引用以避免编译时错误的灵丹妙药。

有时,您的实现可能是曾经在设计时引用的程序集的一部分,可能以循环引用结束,但这只是巧合:它可能在该程序集中或仅在一个实现中,或者只是第三方部件。谁知道 ;)

于 2013-08-16T10:51:35.607 回答