इस इस तरह के बाद कुछ:विधि के साथ बेस क्लास को कैसे कार्यान्वित करें और अभी तक व्युत्पन्न कक्षा को ओवरराइड करने के लिए मजबूर करें?
public abstract class AAA
{
protected abstract virtual string ToString() // Error
{
// Base Stuff
}
}
public abstract class BBB : AAA
{
public override string ToString()
{
// Use base.ToString();
// More Stuff
}
}
मैं एक पोस्ट पढ़ (abstract method in a virtual class) डायन था सुंदर मेरे सवाल की तरह है, लेकिन वहाँ एक छोटा सा फर्क है। मैं AAA.ToString() को आधार व्यवहार और प्राप्त करने के लिए व्युत्पन्न कक्षा को ओवरराइड करने के लिए मजबूर करना चाहता हूं।
मुझे पता है कि मैं ऐसा कुछ कर सकता हूं (नीचे स्क्रॉल करें) लेकिन मैं एक उचित तरीके की तलाश में था।
public abstract class AAA
{
public abstract string ToString();
protected string ToString2()
{
// Base Stuff
}
}
public class BBB : AAA
{
public override string ToString()
{
// Use base.ToString2();
// More Stuff
}
}
मैं भी शायद एक IAAA इंटरफेस बनाने के लिए और की तरह
public class BBB : AAA, IAAA { ... }
मेरी बीबीबी वर्ग का निर्माण लेकिन मेरे लिए ठीक नहीं लग रही है हो सकता है।
धन्यवाद, आपकी संपादित मुझे कुछ महत्वपूर्ण एहसास बनाया! यहां तक कि अगर मुझे बेस क्लास में ToString() को परिभाषित करने के लिए एक चमत्कारिक तरीका मिलेगा और व्युत्पन्न कक्षा में ओवरराइड को मजबूर किया जाएगा, तो ToString() का उपयोग करने के लिए ओवरराइड को मजबूर करने का कोई तरीका नहीं है! मुझे इस पोस्ट को ओवरराइड को मजबूर करने के बारे में एक एमवीपी द्वारा भी मिला: http://social.msdn.microsoft.com/forums/en-US/csharplanguage/thread/c25b6477-b990-4284-abaf-801ddf18207c। फिर से धन्यवाद श्रीमान। – Tipx
सेवा की खुशी है। वह पोस्ट मार्क ग्रेवल द्वारा है ... वह एसओ पर भी जाना जाता है :) –
यह नीचे पोस्ट किए गए ओपीएस उत्तर के साथ तुलना कैसे करता है? विधि टेम्पलेट के लिए – Armbrat