Ho visto i seguenti forum di lettura del layout di codice e altri post del blog e adattato per fare alcune domande.C# Classe astratta che implementa un'interfaccia
public interface IService<T>
{
int Add(T entity);
void Update(T entity);
}
public abstract class ServiceBase<T> : IService<T>
{
public int Add(T entity) { ... }
public void Update(T entity) { ... }
}
public interface ICarService : IService<Car>
{
}
public class SomeBaseClass : ServiceBase<Car>, ICarService
{
public int Add(Car entity);
public void Update(Car entity);
}
Quello che non capisco è il vantaggio di avere la classe astratta implmenting l'interfaccia. Per me è semplicemente un po 'ripetitivo e non riesco a capire il vantaggio di avere una classe astratta che implementa l'interfaccia.
- Perché la classe astratta non si definisce semplicemente senza la necessità di ereditare l'interfaccia di IService? Questo sta raddoppiando il codice?
- Perché lo
SomeBaseClass
deve essere inserito anche nelloICarService
? Non dovrebbe essere sufficiente il ServiceBase?
Una cosa che ho notato era in SomeBaseClass ottengo sempre un avvertimento sui metodi che dice 'X nasconde ereditato membro Y. Utilizzare la nuova parola chiave se nascondersi era destinato'. Poiché la classe astratta ha 'Aggiungi', l'interfaccia di servizio ha 'Aggiungi', non sa cosa fare sembra. – fes
Chi intendi con "it" nell'ultima frase? L'avviso del compilatore è assolutamente lì ... –