在ASP.NET MVC中使用Ninject時,抽象出第三方依賴關係的最佳方式是什麼?如何處理抽象第三方依賴項(依賴注入)?
通常情況下,我做這樣的事情:
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到控制器。
但是,如果依賴項是第三方,我該如何做到這一點?例如,我正在使用FlickrNet。
public class ProductController : Controller
{
private Flickr flickr;
...
}
我希望能夠抽象Flickr
對象擄到一個接口,這樣我可以使用依賴注入並使其更容易進行單元測試。我知道我可以創建一個'服務'類型的接口,然後根據將包裝Flickr對象的類實現一個類。
但我必須在對應於Flickr對象的每個成員的接口中定義一個成員,然後將這些成員映射到包裝器對象中。 Flickr對象中有許多成員。
有沒有更好的方法來處理這個問題?我的主要目標是在單元測試中輕鬆模擬Flickr依賴。
Flicker對象中的方法是否是偶然虛擬的? – 2012-08-09 01:48:07
@BrianDishaw不,他們不是。 – 2012-08-09 01:55:14
我想這太容易了。似乎你必須包裝它,並創建一個界面..也許有代碼生成器,可以爲你寫鍋爐板? – 2012-08-09 01:58:57