Tener algo como esto esto:¿Cómo implementar una clase base con un método y aún forzar a la clase derivada a anularla?
public abstract class AAA
{
protected abstract virtual string ToString() // Error
{
// Base Stuff
}
}
public abstract class BBB : AAA
{
public override string ToString()
{
// Use base.ToString();
// More Stuff
}
}
leí otro post (abstract method in a virtual class) bruja era bastante como mi pregunta, pero hay una pequeña diferencia. Me gustaría que AAA.ToString() tenga un comportamiento base y fuerce la clase derivada para anularla.
Sé que podría hacer algo como esto (desplazarse hacia abajo) pero estaba buscando una manera adecuada.
public abstract class AAA
{
public abstract string ToString();
protected string ToString2()
{
// Base Stuff
}
}
public class BBB : AAA
{
public override string ToString()
{
// Use base.ToString2();
// More Stuff
}
}
Podría también, probablemente, hacer una interfaz de IAAA y construir mi clase de acreditación como
public class BBB : AAA, IAAA { ... }
pero no me parece correcto.
Gracias, tu edición hizo darme cuenta de algo importante! Incluso si encontrara una forma milagrosa de definir ToString() en la clase base y forzar la anulación en la clase derivada, simplemente no hay manera de forzar la anulación para usar ToString()! También encontré esta publicación de un MVP sobre forzar la anulación: http://social.msdn.microsoft.com/forums/en-US/csharplanguage/thread/c25b6477-b990-4284-abaf-801ddf18207c. Gracias de nuevo señor. – Tipx
Me alegro de estar de servicio. Esa publicación es de Marc Gravell ... también es muy conocido en SO :) –
¿Cómo se compara esto con la respuesta de OP publicada a continuación? – Armbrat