一个方面内的数据访问

时间:2013-08-16 10:19:59

标签: c# architecture aop postsharp aspect

说我有以下分层架构......

enter image description here

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

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

1 个答案:

答案 0 :(得分:2)

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

最佳方法是inversion of control模式。

您的数据访问可以实现接口,并且可以在运行时通过使用反转控制框架(例如Castle Windsor或{{3}来解析实现整个接口的人员来检索它们的实现}。

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

我想补充一些说明:运行时依赖项解析不是生成循环引用的银弹,可以避免编译时错误。

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