Esta es la contestación más acertada que te podemos compartir, pero obsérvala detenidamente y valora si se puede adaptar a tu trabajo.
Solución:
En C#, una clase que implementa una interfaz es requerido para definir todos los miembros de esa interfaz. En el caso de una clase abstracta, simplemente define esos miembros con el abstract
palabra clave:
interface IFoo
void Bar();
abstract class Foo : IFoo
public abstract void Bar();
O dicho de otro modo: usted no tengo que “implementar” ella (lo que sería una terrible limitación para las clases abstractas); sin embargo, en C#, usted tengo que decirle al compilador que está pasando deliberadamente la responsabilidad a subclases concretas, y la línea de código anterior muestra cómo hacerlo.
Los comentarios y votos negativos que se quejan de que esta no es una respuesta a la pregunta no tienen sentido. Alguien que viene a Stack Overflow, que recibió este error del compilador, pero que tiene una clase abstracta en la que sería un error proporcionar una implementación, está atascado sin una buena solución: tendría que escribir métodos de implementación que lanzaran excepciones de tiempo de ejecución, un trabajo horrendo -alrededor- hasta que tengan la información anterior. Si es bueno o malo que C# requiera esta claridad está fuera del alcance de Stack Overflow y no es relevante para la pregunta ni para esta respuesta.
A diferencia de Java, en C#: “una clase abstracta debe proporcionar implementaciones de todos los miembros de las interfaces que se enumeran en la lista de clases base de la clase. Sin embargo, una clase abstracta puede asignar métodos de interfaz a métodos abstractos”.
https://msdn.microsoft.com/en-us/library/Aa664595(v=VS.71).aspx
No tienen que implementar realmente la interfaz.
Los métodos/propiedades de la interfaz también pueden ser abstractos o incluso virtuales. Así que depende de las subclases implementarlas realmente.