2014-03-04 124 views
0

我有一个实现各个接口的典型库:MVC库 - 依赖注入助手

public class AccountRepository : IAccountRepository, IDisposable 
{ 
.... 

同时这个仓库里我使用的是静态辅助类。什么是静态类的正确方法?由于他们不能实现接口?

我想让我的存储库解耦(DI模式),但我不知道如何将其应用于我的存储库使用的静态类。

谢谢

回答

2

为什么你的存储库类中的静态类存在问题。存储库类通常用于将数据访问代码与应用程序的其余部分分离。这基本上允许您通过为新的数据访问提供程序重新实现具体的存储库类来替代数据访问提供程序,而无需付出太多努力。

您可以使用DI将您的存储库类注入到控制器或服务类中。

如果你真的想让你的头在DI附近,我会推荐阅读Mark Seeman的“.Net中的依赖注入”。

+0

我明白你的意思,但是如果我的存储库正在使用未通过构造函数传递给它的其他类,它是否已解耦?我怎样才能嘲笑我的接口提供给它,然后存储库正在调用其他静态类? THanks – user2779312

+0

如果您试图解耦存储库中的依赖关系的原因是为了更容易使用TDD进行测试,需要考虑的一件事是,当您测试存储库时,您正在跨系统边界进行测试(即,您正在进行通信与数据库,XML文件等),所以你的测试不再是真正的单元测试。它们是集成测试,因此您不应该担心孤立地测试该方法中的逻辑。即使您在某些时候提取了存储库中的所有依赖关系,也需要跨越系统边界并访问数据库。 – Andrew

+0

谢谢!我明白。 – user2779312