I tienen una interfaz de la siguiente manera¿Cómo implementar parcialmente un contrato en una clase base abstracta?
public interface IX
{
void MethodA();
void MethodB();
}
Tengo dos contratos método de la interfaz MethodA y MethodB. Definiré un conjunto de clases que implementará la interfaz anterior. De estos dos métodos, MethodA es común para todos los tipos que implementarán la interfaz. Puedo definir una clase abstracta de la siguiente manera
public abstract class XBase:IX
{
public void MethodA()
{
// Common behaviour implementation
}
public abstract void MethodB();
}
Y heredar esta clase a todos los tipos que necesiten implementar la interfaz anterior. Funciona.
Pero aquí en la clase abstracta agrego 'public abstract void MethodB();'. Parece una repetición del contrato MethodB.
¿Por qué C# no permite la implementación parcial de la interfaz si la clase es abstracta ?. La interfaz anterior tiene solo dos métodos. supongamos que una interfaz tiene 10 métodos y 5 son funciones comunes y 5 no, ¿estamos obligados a agregar los 5 métodos que no son comunes en la clase abstracta?
Just Curious ¿por qué querrías implementar una interfaz en una clase abstracta? Parece romper las relaciones is-a, actua como-a. – CkH
@ Cameron: En realidad, creo que este es un enfoque muy bueno. En teoría, podría tener varias clases base abstractas diferentes que implementan la misma interfaz a través de un enfoque fundamentalmente diferente para su implementación. –