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 の依存関係を簡単にモックできるようにすることです。