将 Ninject 与 ASP.NET MVC 一起使用时,抽象出 3rd 方依赖项的最佳方法是什么?
通常,我会这样做:
public interface IProductRepository
{
IEnumerable<Product> GetProducts();
}
public class ProductRespository : IProductRepository
{
public IEnumerable<Product> GetProducts()
{
...
}
}
然后在控制器中:
public class ProductController : Controller
{
private IProductRepository repository;
public ProductController(IProductRepository repository)
{
this.repository = repository;
}
...
}
然后我使用 Ninject 将固体 ProductRepository 自动注入控制器。
但是,如果依赖项是第 3 方,我该怎么做?例如,我正在使用FlickrNet。
public class ProductController : Controller
{
private Flickr flickr;
...
}
我希望能够将Flickr
对象抽象到一个接口中,以便我可以使用依赖注入并使其更容易进行单元测试。我知道我可以创建一个“服务”类型的接口,然后实现一个基于包装 Flickr 对象的类。
但是我必须在接口中定义一个与 Flickr 对象的每个成员相对应的成员,然后将每个成员映射到包装器对象中。Flickr 对象中有很多很多的成员。
有没有更好的方法来处理这个问题?我的主要目标是在单元测试中轻松模拟 Flickr 依赖项。