Generic kısmında tanımlanan varlık için belirli kriterler eklenerek böylece hatalı tiplerin kullanılmasının önüne geçilebilir yada tipler ihtiyaç durumuna göre kısıtlanabilir.
Referans Tip Kısıtlama:
Örneğin aşağıdaki durumda string yada istenmeyen bir tip yollanımının önüne geçmek için referans tip olan( class bu anlama gelir) , new'lenebilen ve bir Entity ( DB nesnesi) olan varlıklar kullanılabilir filtresi ile Generic'i kısıtlamış oluruz.
public interface IRepository<T> where T : class, IEntity, new() { void Add(T entity); void Update(T entity); void Delete(T entity); List<T> GetAll(); List<T> SearchByName(string key); List<T> GetByUnitPriceAToZ(); List<T> GetByUnitPriceZToA(); }
Değer Tip Kısıtlama:
Yalnızca int string vb değer tipler için aşağıdaki gibi ksııtlama yapılabilir.
public interface IRepository<T> where T : struct { void Add(T entity); void Update(T entity); void Delete(T entity); List<T> GetAll(); List<T> SearchByName(string key); List<T> GetByUnitPriceAToZ(); List<T> GetByUnitPriceZToA(); }