En C #, se requiere una clase que implemente una interfaz para definir todos los miembros de esa interfaz. En el caso de una clase abstracta, simplemente define esos miembros con la abstract
palabra clave:
interface IFoo
{
void Bar();
}
abstract class Foo : IFoo
{
public abstract void Bar();
}
O para decirlo de otra manera: no tiene que "implementarlo" (lo que sería una limitación terrible en las clases abstractas); sin embargo, en C #, tiene que decirle al compilador que está pasando deliberadamente el dinero a subclases concretas, y la línea de código anterior muestra cómo hacerlo.
Los comentarios y votos negativos quejándose de que esto no es una respuesta a la pregunta están perdiendo el punto. Alguien que viene a Stack Overflow, que recibió este error de compilación, pero que tiene una clase abstracta en la que sería un error proporcionar una implementación, está atrapado sin una buena solución: tendría que escribir métodos de implementación que arrojaran 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 explicidad está fuera del alcance de Stack Overflow, y no es relevante para la pregunta ni esta respuesta.