आपको एक प्रतिनिधि का उपयोग करने की आवश्यकता है, जो एक विशेष वर्ग है जो एक विधि का प्रतिनिधित्व करता है। आप या तो अपने स्वयं के प्रतिनिधि को परिभाषित कर सकते हैं या निर्मित में से किसी एक का उपयोग कर सकते हैं, लेकिन प्रतिनिधि के हस्ताक्षर को उस विधि से मेल खाना चाहिए जिसे आप पास करना चाहते हैं।
अपनी खुद की परिभाषा:
public delegate int MyDelegate(Object a);
यह उदाहरण एक विधि है कि एक पूर्णांक वापस आती है और एक पैरामीटर के रूप एक वस्तु संदर्भ लेता है मेल खाता है।
आपके उदाहरण में, दोनों विधि ए और विधि बी कोई पैरामीटर नहीं लौटाते हैं, इसलिए हम अंतर्निहित एक्शन प्रतिनिधि वर्ग का उपयोग कर सकते हैं।
यहाँ अपने उदाहरण संशोधित किया गया है:
public void PassMeAMethod(string text, Action method)
{
DoSomething(text);
// call the method
method();
}
public void methodA()
{
//Do stuff
}
public void methodB()
{
//Do stuff
}
public void Test()
{
//Explicit
PassMeAMethod("calling methodA", new Action(methodA));
//Implicit
PassMeAMethod("calling methodB", methodB);
}
आप देख सकते हैं, तो आप स्पष्ट या परोक्ष प्रतिनिधि प्रकार का उपयोग कर सकते हैं, इनमें से जो भी आप सूट।
स्रोत
2010-10-25 14:27:25
आपको प्रतिनिधियों के साथ ऐसा करने में सक्षम होना चाहिए। – jimplode
.NET ढांचे का कौन सा संस्करण आप चल रहे हैं? –
3.5, क्या कोई मुझे ऊपर दिए गए उदाहरण का उपयोग करके दिखा सकता है? धन्यवाद – raklos