विरासत में मिला है दुर्भाग्य से, मुझे मूल परियोजना नहीं मिल रही है जिसने मुझे इस प्रश्न का नेतृत्व किया। शायद इस सवाल को थोड़ा और संदर्भ दिया होगा।सारणी वर्ग सबसे व्युत्पन्न प्रकार
संपादित करें: पर एक ठोस कार्यान्वयन के साथ http://mews.codeplex.com/SourceControl/changeset/view/63120#1054567: मैं मूल परियोजना मैं में इस देखा है पाया http://mews.codeplex.com/SourceControl/changeset/view/63120#1054606
कहना मैं एक ठोस कार्यान्वयन करता है कुछ की तरह उपयोगी के साथ एक अमूर्त वर्ग है की सुविधा देता है:
abstract class AbstractClass
{
public virtual int ConvertNumber(string number)
{
string preparedNumber = Prepare(number);
int result = StringToInt32(number);
return result;
}
protected abstract string Prepare(string number);
protected virtual int StringToInt32(string number)
{
return Convert.ToInt32(number);
}
}
sealed class ConcreteClass : AbstractClass
{
protected override string Prepare(string number)
{
return number.Trim();
}
public override int ConvertNumber(string number)
{
return base.ConvertNumber(number);
}
}
यह उतना ही बुनियादी है जितना इसे प्राप्त होता है।
abstract class AbstractGenericClass<TGenericClass>
where TGenericClass : AbstractGenericClass<TGenericClass>
{
public virtual int ConvertNumber(string number)
{
string preparedNumber = Prepare(number);
int result = StringToInt32(number);
return result;
}
protected abstract string Prepare(string number);
protected int StringToInt32(string number)
{
return Convert.ToInt32(number);
}
}
sealed class ConcreteGenericClass : AbstractGenericClass<ConcreteGenericClass>
{
protected override string Prepare(string number)
{
return number.Trim();
}
public override int ConvertNumber(string number)
{
return base.ConvertNumber(number);
}
}
अब क्यों एक ऐसी बात करना होगा: अब कोड में मैं वेब लेखक सबसे व्युत्पन्न प्रकार से सार वर्ग इनहेरिट द्वारा inheritence लागू किया, उदा पर देखा है? मुझे बहुत अस्पष्टता से याद है कि यह एक कारण था जो एटीएल में प्रदर्शन कारणों से उपयोग किया जाता था (एक vtable के साथ काम किए बिना ठोस सदस्य कार्यान्वयन को बुलाए जाने का कोई तरीका?) मुझे इस हिस्से पर बहुत यकीन नहीं है।
मैंने दोनों मामलों के लिए जेनरेट आईएल की जांच की है और वे बिल्कुल वही हैं।
यह मुझे कौन समझा सकता है?
मैं कोड के अपने पहले अनुभाग संकलित नहीं लगता। 'सार्वजनिक ओवरराइड int ConvertNumber (स्ट्रिंग नंबर) 'लेकिन मूल प्रकार में ओवरराइड करने के लिए ऐसी कोई विधि नहीं है। –
मुझे लगता है कि ऐसा नहीं किया जा रहा है? http://pastebin.com/BgpuKYb7 – Zenwalker
@DannyChen: आपका अधिकार, मैंने मार्कअप के लिए कोड थोड़ा सा बदल दिया है, मैंने इसे अभी ठीक कर दिया है। प्रश्न अभी भी – Polity