मैं के साथ सी # अभी शुरुआत कर रहा हूँ और इस के लिए किसी भी सवाल का जवाब नहीं मिल सकता है:सही कार्रवाई <Interface> का प्रतिनिधि कैसे करें?
इम कुछ इंटरफ़ेस पैरामीटर के साथ क्रिया को सौंपने की कोशिश कर रहा है, लेकिन वस्तुओं है कि इस इंटरफ़ेस का विस्तार (या वर्ग)
साथ कार्यों के माध्यम से धक्का// some class extending interface
public class IntEvent : IFace{}
public class MoveEvent : IFace{}
// function i like to use to verify Action
static void setAction(Action<IFace> evt) {
// evt ...
}
// function to delegate as Action
static void evtCheck(IntEvent evt) {
// some func
}
static void evtMove(MoveEvent evt) {
// some func
}
// class {
// call method inside class and delegate this function :
setAction(evtCheck);
setAction(evtMove);
मुझे एक त्रुटि मिल रही है कि "evtCheck(IntEvent)
को Action<IFace>
में परिवर्तित नहीं किया जा सकता", भले ही IntEvent
IFace
इंटरफ़ेस बढ़ाता है।
मुझे इसे कैसे हल करना चाहिए? शायद मुझे Func या Delegate का उपयोग करना होगा?
हाँ, यह वही है जो मैं करने की कोशिश कर रहा हूं। क्रिया फ़ंक्शन हमेशा ऑब्जेक्ट की अपेक्षा करते हैं जो समान इंटरफ़ेस या ऑब्जेक्ट का विस्तार करता है ठीक है, मैं आगंतुक डिजाइन पैटर्न देखेंगे। – turbosqel