मैं एक ओपन सोर्स प्रोजेक्ट (नोपॉमर्स) का अनुकूलन कर रहा हूं। यह एक महान सॉफ्टवेयर है और प्लगइन का उपयोग करके विस्तारशीलता का समर्थन करता है। एक प्लगइन के लिए, मैं एक दृश्य में जानकारी जोड़ना चाहता हूं, ऐसा करने के लिए, मैं नियंत्रक से उत्तराधिकारी बनना चाहता हूं और उन कार्यों को ओवरराइड करना चाहता हूं जिन्हें मुझे बदलने की जरूरत है।क्या एमवीसी कंट्रोलर एक्शन ओवरराइड करने का कोई तरीका है?
public class MyController : OldController{
//stuff
public new ActionResult Product(int productId)
{
//Somestuff
}
}
मैं अपने प्लगइन से रास्ता बदल दिया है, लेकिन जब इस कार्रवाई मैं निम्नलिखित त्रुटि मिलती है कहा जाता हो:
The current request for action 'Product' on controller type 'MyController' is ambiguous between the following action methods: System.Web.Mvc.ActionResult Product(Int32) on type MyPlugin System.Web.Mvc.ActionResult Product(Int32) on type OldController
वहाँ किसी भी तरह से मैं इस विधि को ओवरराइड कर सकते है तो यह मेरी नियंत्रक है ? (पुनश्च: मैं ओवरराइड कीवर्ड का उपयोग नहीं कर सकते क्योंकि यह के रूप में आभासी, सार या OldController में ओवरराइड चिह्नित नहीं है)
धन्यवाद, ऑस्कर
कैसे के बारे में 'OldController' से _deriving_ नहीं बल्कि इसकी बजाय सभी' OldController' अपने 'MyController' वर्ग ([प्रॉक्सी पैटर्न] के समान की तरह (http://www.dofactory.com में लिपटे तरीकों प्रदान /Pternterns/PatternProxy.aspx#_self1)) –
यदि यह वर्चुअल चिह्नित किया गया तो क्या यह काम करेगा? मैंने एक प्रतिकूल तरीके से सोचा होगा कि आपने – Rikon
काम किया होगा जो आप प्राप्त करना चाहते हैं जो वर्तमान नियंत्रक वर्ग से आसानी से एक्स्टेंसिबल नहीं है? –