2009-08-26 21 views
8

(Estoy trabajando en .NET 4.0 beta, C#.)¿Hay alguna manera de hacer que las clases derivadas anulen ToString()?

Tengo una interfaz, y todas las clases derivadas de esta interfaz deben implementar la lógica personalizada ToString(). ¿Es eso ejecutable? ¿Si es así, cómo?

+2

Si _need_ una clase para anular 'ToString()', entonces usted está implicando un contrato más fuerte para 'ToString()' que lo que generalmente se usa. Si es así, puede ser que la definición de un método separado, en lugar de reutilizar 'ToString()' para su propósito, sea una mejor opción. –

+1

Es posible. Mi situación es que quiero que la gente sepa "si llamas a' ToString() 'en cualquier clase de tipo' IMyInterface', obtendrás algo que tiene que ver con el tipo único de datos que debe contener cada 'IMyInterface', y no solo la implementación habitual que le da algo así como el nombre de la clase IIRC. – Domenic

+0

http://stackoverflow.com/questions/510341/force-subclasses-of-an-interface-to-implement-tostring –

Respuesta

10

No a través de una interfaz.

Necesitará usar una clase abstracta para esto.

- Editar

Sólo puede volver a declarar 'ToString' como resumen:

abstract class Foo 
{ 
    public override abstract string ToString(); 
} 
Cuestiones relacionadas