私は、さまざまなデータストアに対して機能する汎用リポジトリを作成する方法を考え出そうとしてきました。
public interface IRepository
{
IQueryable<T> GetAll<T>();
void Save<T>(T item);
void Delete<T>(T item);
}
public class MemoryRepository : IRepository {...}
public class SqlRepository : IRepository {...}
それぞれの同じPOCOドメインクラスに対して作業したいと思います。同様のアプローチも検討しています。各ドメインクラスには独自のリポジトリがあります。
public interface IRepository<T>
{
IQueryable<T> GetAll();
void Save(T item);
void Delete(T item);
}
public class MemoryCustomerRepository : IRepository {...}
public class SqlCustomerRepository : IRepository {...}
私の質問:1)最初のアプローチは実行可能ですか?2)2番目のアプローチに利点はありますか?