Есть ли способ заставить производные классы переопределять ToString ()?

(Я работаю в бета-версии .NET 4.0, C #.)

У меня есть интерфейс, и все классы, производные от этого интерфейса, должны реализовывать пользовательскую логику ToString(). Это принудительно? Если да, то как?


person Domenic    schedule 26.08.2009    source источник
comment
Если вам нужен класс для переопределения ToString(), то вы подразумеваете более сильный контракт для ToString(), чем тот, который обычно используется. Если да, то, возможно, определение отдельного метода, а не повторное использование ToString() для ваших целей, будет лучшим выбором.   -  person Pavel Minaev    schedule 26.08.2009
comment
Возможно. Моя ситуация такова, что я хочу, чтобы люди знали, если вы вызываете ToString() для любого класса типа IMyInterface, вы получите что-то, связанное с уникальным типом данных, который должен содержать каждый IMyInterface, а не просто с обычной реализацией, которая дает вам что-то как и название класса IIRC.   -  person Domenic    schedule 27.08.2009
comment
stackoverflow.com/ questions / 510341 /   -  person Mauricio Scheffer    schedule 15.02.2016


Ответы (1)


Не через интерфейс.

Для этого вам понадобится абстрактный класс.

-- Редактировать

Вы можете просто повторно объявить ToString как абстрактный:

abstract class Foo
{
    public override abstract string ToString ();
}
person Noon Silk    schedule 26.08.2009