2009-08-26 11 views
8

(मैं में काम कर रहा हूँ .NET 4.0 बीटा, सी #।)क्या व्युत्पन्न कक्षाएं ToString() को ओवरराइड करने का कोई तरीका है?

मैं एक अंतरफलक है, और इस इंटरफेस से ली गई सभी वर्गों कस्टम ToString() तर्क लागू करना चाहिए। क्या यह लागू करने योग्य है? यदि हां, तो कैसे?

+2

आप एक वर्ग 'ओवरराइड करने के लिए toString()' _need_ हैं, तो एक मजबूत अनुबंध तो आप जिसका अर्थ रहे हैं सामान्य रूप से उपयोग किए जाने वाले 'ToString()' के लिए। यदि ऐसा है, तो हो सकता है कि आपके उद्देश्य के लिए 'ToString()' का उपयोग करने के बजाय, एक अलग विधि को परिभाषित करना बेहतर विकल्प है। –

+1

यह संभव है। मेरी स्थिति यह है कि मैं लोगों को यह जानना चाहता हूं कि "यदि आप 'आईटीइंटरफेस' प्रकार के किसी भी वर्ग पर 'ToString()' को कॉल करते हैं, तो आपको अद्वितीय प्रकार के डेटा के साथ कुछ करना होगा जो प्रत्येक 'IMyInterface' में होना चाहिए, और न केवल सामान्य कार्यान्वयन जो आपको कक्षा आईआईआरसी के नाम की तरह कुछ देता है। – Domenic

+0

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

उत्तर

10

इंटरफ़ेस के माध्यम से नहीं।

इसके लिए आपको एक अमूर्त कक्षा का उपयोग करने की आवश्यकता होगी।

-

तुम बस फिर से घोषणा कर सकते हैं 'ToString' सार रूप में संपादित करें:

abstract class Foo 
{ 
    public override abstract string ToString(); 
} 
संबंधित मुद्दे

 संबंधित मुद्दे