私はこれを持っています:
public interface IRepository<T> where T : class
{
void Delete(T entity);
void Add(T entity);
void Attach(T entity);
void Detach(T entity);
void SaveChanges();
}
今、すべてのエンティティに対して、一般的な IRepository を実装する具体的なクラスを作成します =>
public class SchoolclassRepository : IRepository<Schoolclass>
{
public void Delete(Schoolclass entity)
{
throw new NotImplementedException();
}
public void Add(Schoolclass entity)
{
throw new NotImplementedException();
}
public void Attach(Schoolclass entity)
{
throw new NotImplementedException();
}
public void Detach(Schoolclass entity)
{
throw new NotImplementedException();
}
public void SaveChanges()
{
throw new NotImplementedException();
}
}
私のViewModelのコンストラクター(mvvmパターン)でこれを行います=>
IRepository<Schoolclass> repo = new SchoolclassRepository();
とにかくすべてのエンティティ クラスで CRUD 操作のコードを書かなければならない場合、IRepository にはどのような利点がありますか?
Customer、Product、Pupil ではIRepository<Product>
、IRepository<Customer>
、IRepository<Pupil>
などを実装するクラスに関係なく、インターフェイスのメソッドを実装します。
なぜ言えなかったのか =>
SchoolclassRepository repo = new SchoolclassRepository(); ???
小さなアプリの単体テストを書く可能性は気にしません。