मैं सी #, .NET 3.5 का उपयोग कर रहा हूं। मैं समझता हूँ कि कैसे घटनाओं का उपयोग करने, कैसे मेरी कक्षा में उन्हें घोषित करने के लिए, उन्हें कैसे कहीं और, आदि से एक काल्पनिक उदाहरण हुक करने:सी # घटनाक्रम दृश्यों के पीछे कैसे काम करते हैं?
public class MyList
{
private List<string> m_Strings = new List<string>();
public EventHandler<EventArgs> ElementAddedEvent;
public void Add(string value)
{
m_Strings.Add(value);
if (ElementAddedEvent != null)
ElementAddedEvent(value, EventArgs.Empty);
}
}
[TestClass]
public class TestMyList
{
private bool m_Fired = false;
[TestMethod]
public void TestEvents()
{
MyList tmp = new MyList();
tmp.ElementAddedEvent += new EventHandler<EventArgs>(Fired);
tmp.Add("test");
Assert.IsTrue(m_Fired);
}
private void Fired(object sender, EventArgs args)
{
m_Fired = true;
}
}
हालांकि, मैं क्या कर समझ में नहीं आता, तब होता है जब एक वाणी एक इवेंट हैंडलर
public EventHandler<EventArgs> ElementAddedEvent;
यह कभी शुरू नहीं हुआ है - तो क्या, वास्तव में, ElementAddedEvent है? यह क्या इंगित करता है? निम्नलिखित काम करेंगे नहीं, क्योंकि eventhandler प्रारंभ कभी नहीं किया गया है:
[TestClass]
public class TestMyList
{
private bool m_Fired = false;
[TestMethod]
public void TestEvents()
{
EventHandler<EventArgs> somethingHappend;
somethingHappend += new EventHandler<EventArgs>(Fired);
somethingHappend(this, EventArgs.Empty);
Assert.IsTrue(m_Fired);
}
private void Fired(object sender, EventArgs args)
{
m_Fired = true;
}
}
मैं नोटिस एक EventHandler.CreateDelegate (...) है कि वहाँ है, लेकिन सभी विधि हस्ताक्षर सुझाव है कि यह केवल करने के लिए प्रतिनिधियों संलग्न के लिए प्रयोग किया जाता है ठेठ ElementAddedEvent + = नया EventHandler (MyMethod) के माध्यम से पहले से मौजूद EventHandler।
मुझे यकीन है कि नहीं कर रहा हूँ अगर क्या मैं मदद मिलेगी करने के लिए कोशिश कर रहा हूँ ... लेकिन अंत में मैं जिसका बच्चों LINQ में एक सार माता पिता DataContext रजिस्टर कर सकते हैं जो तालिका प्रकार वे चाहते हैं "मनाया के साथ आने के लिए करना चाहते हैं "इसलिए मेरे पास पहले अपडेट और आफ्टर अपडेट जैसी घटनाएं हो सकती हैं, लेकिन विशिष्ट प्रकार के लिए। कुछ इस तरह: - और मैं समझने के लिए :)
मेरा जवाब भी देखें http://stackoverflow.com/questions/2598170/question-regarding-to-value-reference-type-of-events/3854421#3854421 –