Considere el siguiente problema:Método abstracto C# con implementación de clase base solamente?
Tiene una clase 'A' que sirve como una clase base para muchas otras clases similares, por ejemplo. una clase llamada B.
La clase A es útil en sí misma (y ya se usa en todas partes) y, por lo tanto, no es abstracta.
El quid de la cuestión es que ahora desea aplicar un nuevo protocolo que requiera que todas las clases heredadas de A (incluido A sí mismo) implementen un método 'func()'. Si una subclase olvida implementar func(), debería haber un error de compilación.
class A {
A func() { ret new A(...) }
}
class B : A {
A func() { ret new B(...) }
}
class C : A {
// Should give error : no func()
}
está claro el problema? No puedo hacer un resumen de A :: func() porque quiero seguir usando A como una clase concreta. No puedo hacerlo virtual, ya que eso provocaría que las subclases retrocedieran en la superclase (y no daría errores de compilación).
Lo único que se acerca a una solución es crear una nueva clase abstracta A * y heredar todos los tipos personalizados y reemplazar todos los usos actuales de A como una clase concreta con una nueva clase 'DefaultA' que hereda de UN*. Esto parece desordenado. Por favor dime que hay alguna otra forma de hacer esto?
Su solución "desordenada" me parece la correcta. –