2009-08-26 14 views
8

(sto lavorando in .NET 4.0 beta, C#.)C'è un modo per rendere le classi derivate prioritarie su ToString()?

ho un'interfaccia, e tutte le classi derivate da questa interfaccia dovrebbe attuare personalizzato ToString() logica. È applicabile? Se é cosi, come?

+2

Se _need_ una classe per sovrascrivere 'ToString()', allora si sta implicando un contratto più forte per 'ToString()' rispetto a quello che viene generalmente utilizzato. In tal caso, potrebbe essere che la definizione di un metodo separato, piuttosto che riutilizzare 'ToString()' per il proprio scopo, sia una scelta migliore. –

+1

È possibile. La mia situazione è che voglio che la gente sappia "se chiami' ToString() 'su qualsiasi classe di tipo' IMyInterface', avrai qualcosa a che fare con il tipo unico di dati che ogni 'IMyInterface' dovrebbe contenere, e non solo la solita implementazione che ti dà qualcosa come il nome della classe IIRC. – Domenic

+0

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

risposta

10

Non attraverso un'interfaccia.

Avrai bisogno di usare una classe astratta per questo.

- Modifica

Si può solo ri-dichiarare 'ToString' come astratto:

abstract class Foo 
{ 
    public override abstract string ToString(); 
} 
Problemi correlati