2009-08-26 2 views
8

(저는 .NET 4.0 베타, C#에서 일하고 있습니다.)파생 클래스가 ToString()을 재정의하도록하는 방법이 있습니까?

저는 인터페이스를 가지고 있으며이 인터페이스에서 파생 된 모든 클래스는 사용자 정의 ToString() 로직을 구현해야합니다. 그것은 집행 가능합니까? 그렇다면 어떻게?

+2

당신이'ToString()를'오버라이드 (override)하는 클래스를 _need_ 경우에, 당신이 암시하고 강한 계약 'ToString()'에 대해 일반적으로 사용되는 것보다 큽니다. 그렇다면, 목적을 위해 ToString()을 재사용하기보다는 별도의 메소드를 정의하는 것이 더 나은 선택 일 수 있습니다. –

+1

가능합니다. 제 상황은 "IMyInterface"타입의 클래스에서 ToString()을 호출하면 사람들에게 알리 길 원합니다. 모든 IMyInterface가 포함해야하는 고유 한 데이터 유형과 관련된 것을 얻을 것입니다. 클래스 IIRC의 이름과 같은 것을 제공하는 일반적인 구현이 아닙니다. – Domenic

+0

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

답변

10

인터페이스를 통과하지 못했습니다.

이에 대한 추상 클래스를 사용해야합니다.

-

당신은 단지 추상적으로 'ToString'- 선언을 다시 할 수 있습니다 편집 :

abstract class Foo 
{ 
    public override abstract string ToString(); 
} 
관련 문제