È possibile ottenere qualcosa di molto simile attraverso l'uso intelligente di lambda:
public class BaseClass {
public BaseClass(Action<string> abs1 = null, Action<string> abs2 = null){
AbstractMethod1 = abs1 ?? s=>{};
AbstractMethod2 = abs2 ?? s=>{};
}
public Action<string> AbstractMethod1 {get; private set;}
public Action<string> AbstractMethod2 {get; private set;}
}
Così si potrebbe usare questa definizione in questo modo:
new BaseClass(s=> Console.WriteLine(s), s=> Console.WriteLine(s));
È inoltre possibile definire tutti i metodi come parte di un'interfaccia e quindi costruire una classe con un'implementazione concreta dell'interfaccia (proxy delle chiamate verso l'implementazione concreta) - La chiamerei modello "Strategia". Ma questa è solo una variazione di questo tema.
fonte
2012-05-27 20:32:30
No, non ha molto in comune con le classi anonime, anche se sembrano simili. – Voo