2011-01-29 7 views
5

का उपयोग कर मैं चाहता गतिशील इस तरह कस्टम घटना संचालकों कुछ छद्म कोड में की सूची सेट करने के लिए एक ईवेंट हैंडलर कैसे निर्धारित करें: आपगतिशील प्रतिबिंब

FieldInfo[] fieldInfos = this.GetType().GetFields(
    BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly); 

foreach (FieldInfo fieldInfo in fieldInfos) 
{ 
    if this.fieldInfo.GetType() = TypeOf(CustomEventHandler<this.fieldInfo.Name>) { 
     this.fieldInfo.Name += new CustomEventHandler<this.fieldInfo.Name>(OnChange<this.fieldInfo.Name>); 
    } 
} 

मैं सही वाक्य रचना नहीं मिल सकता है कर सकते हैं ?

उत्तर

7

GetFields के बजाय GetEvents के बारे में कैसे?

var t = something.GetType(); 

    var eventInfos = t.GetEvents(); 

    foreach (var info in eventInfos) 
    { 
     if (info.EventHandlerType == TypeOf(CustomEventHandler<this.fieldInfo.Name>) 
       info.AddEventHandler(...);     
    } 

मैं पूरी तरह प्रकार- तुलना के बारे में निश्चित नहीं हूँ, लेकिन फिर, fieldInfo.Name कि जैसा कोई सामान्य में उपयोग नहीं किया जा सकता है।

4

टाइप करें। गेटवेल्ट्स(), GetFields() नहीं। फिर आप EventInfo.AddEventHandler() का उपयोग कर सकते हैं।

संबंधित मुद्दे