【发布时间】:2011-06-06 09:29:47
【问题描述】:
我有一个接收 IRepository 的 wcf 服务
IRepository irepo;
public SomeService(IRepository repo)
{
this.irepo = repo;
}
存储库包含 Save、Delete 等方法,并通过构造函数获取 CustomDataContext:
public class ExampleRepository: IRepository, IDisposible {
public ExampleRepository(CustomDataContext datacontext)
{
this.dc = datacontext;
}
...
}
稍后在服务中,我有一些方法需要使用存储库(然后在方法中处理它)。现在因为我想使用依赖注入来切换存储库进行测试而不是测试,我如何声明具体的存储库。我可以像这样创建存储库的新实例:
using (IRepository repos = (IRepository)Activator.CreateInstance(irepo.GetType(), new object[] {new CustomDataContext()} ))
{
...
}
但我认为这是一种缓慢的做法(而且不正确)
有没有办法根据注入的类型创建一个新的存储库,或者我只是让事情变得更复杂然后有必要?
提前致谢
【问题讨论】:
-
看看这篇文章:bit.ly/bF7jL3。它提供了如何在使用 LINQ to SQL 时对代码进行单元测试。
标签: c# wcf linq-to-sql dependency-injection