Alcuni motivi ulteriori per implementare un'interfaccia in modo esplicito:
retrocompatibilità: Nel caso in cui le ICloneable
cambiamenti di interfaccia, di attuazione i membri della classe di metodo non devono cambiare le loro firme del metodo.
codice più pulito: ci sarà un errore del compilatore se il metodo Clone
viene rimosso dal ICloneable, se si implementa il metodo implicitamente si può finire con metodi pubblici 'orfani' inutilizzati
tipizzazione forte : per illustrare la storia di supercat con un esempio, questo sarebbe il mio codice di esempio preferito, l'implementazione ICloneable
permette esplicitamente Clone()
da fortemente tipizzato quando si chiama direttamente come membro MyObject
esempio:
public class MyObject : ICloneable
{
public MyObject Clone()
{
// my cloning logic;
}
object ICloneable.Clone()
{
return this.Clone();
}
}
fonte
2011-08-16 17:19:09
Sì, esattamente questo è un caso che EIMI risolve. E altri punti sono coperti dalla risposta "Michael B". – crypted
Eccellente esempio. Adoro i nomi di interfaccia/classe!:-) –
Non mi piace, due metodi con la stessa firma in una classe che fanno cose molto diverse? Questo è estremamente pericoloso e molto probabilmente causerà il caos in qualsiasi sviluppo di grandi dimensioni. Se hai un codice come questo, direi che la tua analisi e il design sono all'altezza del wahzoo. – Mick