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 abstractpalabra 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.