Ci sono diversi aspetti da considerare, prima di decidere come modificare il codice.
Considerare il caso in cui terze parti hanno scritto codice che utilizza o implementa questa interfaccia. Ciò aumenterebbe significativamente la complessità della gestione delle modifiche al codice richieste, nonché l'aggiunta di un elemento politico al processo, creando lavoro (e costi) per altre società.
Poiché questa interfaccia è già stata implementata in molte classi è un strong indicatore contro le modifiche all'interfaccia corrente. È necessario prendere in considerazione le conseguenze su tutte le implementazioni di questo nuovo metodo di interfaccia.
Il fatto che tutte queste implementazioni siano state completate senza aver bisogno di questo nuovo metodo è un flag di avviso che forse questo non è veramente fondamentale per questo scopo dell'interfaccia e che dovrebbe essere implementato come una nuova interfaccia separata sulla base del fatto che questo è un uso separato (ma correlato) dell'oggetto e richiede la sua interfaccia.
Detto questo, supponendo che controlliamo tutto il codice che utilizza questa interfaccia, implementerei il nuovo metodo in tutte le classi implementando esplicitamente il nuovo metodo.
per es.
public class MyObject : ITheInterface
{
public void ITheInterface.NewMethod(int age)
{
throw new NotImplemented("NewMethod needs to be implemented on MyObject");
}
}
Implementando il metodo in modo esplicito come questo, il codice chiama solo la nuova implementazione quando utilizza un riferimento digitato come ITheInterface per l'oggetto.