フラグに基づいて 2 つのリポジトリ インスタンスのいずれかを返そうとしています。私のリポジトリ インターフェイスと実装は次のようになります。
public interface IRepository<T>
{
T Insert(T entity);
void Delete(T entity);
IEnumerable<T> SearchFor(Expression<Func<T, bool>> predicate);
IEnumerable<T> GetAll();
T SearchForFirst(Expression<Func<T, bool>> predicate);
bool Has(Expression<Func<T, bool>> predicate);
}
class Repository<T> : IRepository<T> where T : class { ... implementation here ...}
リポジトリの 2 つのインスタンスのうちの 1 つを返すメソッドは、次のようになります。
public IRepository<T> GenerateRepository(bool flag)
{
if ( flag ) {
return new Repository<MyFirstType>();
} else {
return new Repository<MySecondType>();
}
}
これが実際にどのように書かれるべきかについて、誰かが私を正しい方向に向けることができますか?
ありがとう