फ़ंक्शन से किसी ईवेंट को वापस करने के लिए वाक्यविन्यास क्या है? (घटना को कॉल करने के लिए, इसे वापस करने के लिए ताकि यह कार्य करने के लिए बाध्य हो)।फ़ंक्शन से किसी ईवेंट को लौटाना
मेरे पास एक कंटेनर क्लास है जिसमें एक शब्दकोश होता है जहां प्रत्येक सदस्यों के पास एक ईवेंट होता है।
Container c = new Container();
c.CreateEventForKey("a"); // Create the member in the dictionary
c.EventForKey("a") += some_function; // Bind some_function to the event in the "a" member
c.OnEventForKey("a","b"); // Calls some_function with argument "b"
कंटेनर वर्ग इस तरह दिखता है:
public class Container {
public class Member {
public event Action<string> AnEvent;
public void OnEvent(string v) { if(AnEvent!=null) { AnEvent(v); } }
}
protected Dictionary<string,Member> members;
// This seems to work OK.
public void OnEventForKey(string k, string v) {
if (members.ContainsKey(k)) { members[k].OnEvent(v); }
else { /* report error */ }
}
// Can't get this to compile.
public event Action<string> EventForKey(string k) {
if (members.ContainsKey(k)) { return members[k].AnEvent; }
else { /* report error */ }
}
}
मैं कैसे EventForKey
तो परिभाषित कर सकते हैं यह मैं क्या उम्मीद करता है कि
उद्देश्य कुछ इस तरह लिखने के लिए सक्षम होने के लिए है?
मुझे नहीं लगता कि आप एक ईवेंट वापस कर सकते हैं, लेकिन आप एक प्रतिनिधि को वापस कर सकते हैं जो किसी ईवेंट से जुड़ा हो सकता है। क्या यही मतलब है तुम्हारा? –
मुझे लगता है कि आपको ईवेंट कीवर्ड को एनेवेंट की घोषणा से, साथ ही इवेंटफोरकी के रिटर्न प्रकार से हटाने की आवश्यकता है। –
@ इयान न्यूसन - मुझे जो परेशानी हो रही है उसका मुख्य हिस्सा 'c.EventForKey (" a ") + = some_function;'। मैं इसे बोझिल 'c.members [" a "] से लिखना चाहता हूं। AnEvent + = some_function', (जैसा कि मैं पहले संस्करण में त्रुटि जांच और लॉगिंग जोड़ सकता हूं, लेकिन दूसरे तक नहीं)। –