2009-08-26 13 views
8

(Pracuję w .NET 4.0 beta, C#.)Czy istnieje sposób, aby klasy pochodne zastąpić ToString()?

Mam interfejs, a wszystkie klasy wyprowadzone z tego interfejsu powinny implementować niestandardową logikę ToString(). Czy to jest wykonalne? Jeśli tak to jak?

+2

Jeśli _need_ klasę nadpisania '' toString(), to pan sugeruje silniejsze umowy dla 'ToString()' niż to, co jest ogólnie używane. Jeśli tak, być może lepszym wyborem jest zdefiniowanie osobnej metody zamiast ponownego używania 'ToString()' dla twojego celu. –

+1

Jest to możliwe. Moja sytuacja jest taka, że ​​chcę, aby ludzie wiedzieli "jeśli wywołasz to ToString()" na dowolnej klasie typu 'IMyInterface', otrzymasz coś, co ma związek z unikalnym typem danych, które każdy' IMyInterface' powinien zawierać, i nie tylko zwykła implementacja, która daje coś takiego jak nazwa klasy IIRC. – Domenic

+0

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

Odpowiedz

10

Nie poprzez interfejs.

Będziesz musiał użyć do tego klasy abstrakcyjnej.

- Edycja

można po prostu ponownie zadeklarować 'ToString' jako abstrakt:

abstract class Foo 
{ 
    public override abstract string ToString(); 
} 
Powiązane problemy