Puntiamo a ridurre il rumore del codice che sarebbe comune per tutti i controller come CRUD di base.
public interface IGenericController<T, Y> where T : BaseMaster
{
IEnumerable<T> Get();
T Get(Y code);
HttpResponseMessage Post(T entity);
T Put(T entity);
T Delete(Y code);
}
questo sarebbe usato come
public class AuditController : GenericController<AuditRepository, int>
Potremmo anche usare l'approccio Composition over Inheritance qui per il riutilizzo del codice, tuttavia ci saranno ancora rumori del codice, quindi lo facciamo come una scelta.
Sono un po 'titubante nel fasciare le classi di base .net esistenti. Una cosa che potrei essere certa è che i metodi virtuali non sono più esposti per l'override.
Ci sarebbero ulteriori complicazioni in questo approccio?