rilegatura di implementazioni dei metodi per interfacciare i metodi che implementano è fatto da meth firma, cioè il nome e la lista dei parametri. La classe che implementa un'interfaccia con un metodo Register
deve avere un metodo Register
con la stessa firma. Sebbene C# ti permetta di utilizzare un diverso metodo come implementazione esplicita, in situazioni come questa sarebbe meglio optare per lo Bridge Pattern, che ti consente di "connettere" un'interfaccia a un'implementazione con firme di metodo non corrispondenti:
interface IMyInterface {
void Register(string name);
}
class MyImplementation {
public void RegisterName(string name) {
// Wrong Register
}
public void RegisterName(string name) {
// Right Register
}
}
la classe ponte "disaccoppia" MyImplementation
da IMyInterface
, che ti permette di cambiare i nomi dei metodi e proprietà in modo indipendente:
class MyBridge : IMyInterface {
private readonly MyImplementation impl;
public MyBridge(MyImplementation impl) {
this.impl = impl;
}
public void Register(string name) {
impl.RegisterName();
}
}
Quando apportare modifiche a uno dei lati del ponte, è necessario apportare la modifica corrispondente nel ponte di essere b fare affari.
Perché non modificare l'interfaccia? –
Perché ... https://msdn.microsoft.com/en-us/library/system.windows.markup.inamescope(v=vs.110).aspx – SuperJMN
Ah mio male. Non è chiaro che non è possibile regolare l'interfaccia dalla domanda. –