OOP de fonksiyonları Class içerisine yazarsın.
Örnek olarak küçük bir kod paylaşıyım.
public interface IGenericRepository where T : class
{
IEnumerable GetAll();
IEnumerable GetAll(Expression> orderBy, bool desc = false);
void Delete(Expression> predicate);
void Delete(T entity);
}
Yukarıdaki interface Generic olarak gelen Class tipine tanımlı olan Methodları implemente eder.
public class GenericRepository : IGenericRepository where T : class
{
protected Data.Entity.Entities _entities;
protected readonly IDbSet _dbSet;
public GenericRepository(Data.Entity.Entities context)
{
_entities = context;
_dbSet = context.Set();
}
public IEnumerable GetAll()
{
return _dbSet.AsEnumerable();
}
public IEnumerable GetAll(Expression> orderBy, bool desc = false)
{
return desc ? _dbSet.OrderByDescending(orderBy).AsEnumerable() : _dbSet.OrderBy(orderBy).AsEnumerable();
}
public void Delete(T entity)
{
_dbSet.Remove(entity);
}
public void Delete(Expression> predicate)
{
var entity = _dbSet.Where(predicate).ToList();
if (entity == null) return;
entity.ForEach(x => _dbSet.Remove(x));
}
}
Yukarıdaki Kod ise, Implemente edilen class için DB methodlarını oluşturur.
Core.Repository.GenericRepository repo = new Core.Repository.GenericRepository();
//Kayıt Silmek
repo.Delete(x => x.Id == 10);
repo.Save();
//Onaylanan Müşterileri Listeler
repo.GetBy(x => x.IsApproved);
Yukarıdaki kod ise, DB de bulunan Customer tablosu üzerinde işlemin nasıl yapıldığını gösterir.
Bu sadece standart DB işlemlerini Generic olarak bir kaç satırda yapmayı sağlar.
Interface içerisine yeni bir method eklendiğinde, diğer Class larda herhangi bir işlem yapmadan direkt olarak kullanabilirsin.
OOP nin sonu yoktur bu arada :)
Bol şans