2011-06-22 11 views
7

सरल मामला:हुक-अप एक प्रतिनिधि क्षेत्र के लिए एक MethodInfo (FieldInfo)

public class MyClass 
{ 
    public Action<double> MyAction; 
} 

public class AnotherClass 
{ 
    public void MyAction(double value) 
    { 
    // ... 
    } 
} 

मैं प्रतिबिंब के माध्यम से दोनों AnotherClass.MyAction(..) विधि और MyClass.MyAction प्रतिनिधि मिल के रूप में, मैं MethodInfo/FieldInfo वर्गों में से एक जोड़ी के साथ खत्म हो जहाँ मैं प्रतिनिधि को विधि को हुक अप नहीं कर सकता। इसके अलावा मुझे स्ट्रिंग से विधि/प्रतिनिधि दोनों नाम मिलते हैं, मैं प्रतिबिंब के बिना आवृत्ति फ़ील्ड/विधियों तक नहीं पहुंच सकता। क्या कोई मुझे इस में हाथ दे सकता है, या इस तरह की एक हुक-अप संभव है?

उत्तर

8

आप विशेष रूप से Delegate.CreateDelegate पर गौर करना चाहिए,:

MethodInfo method = typeof(AnotherClass).GetMethod("MyAction"); 
FieldInfo field = typeof(MyClass).GetField("MyAction"); 


AnotherClass obj = // the object you want to bind to 

Delegate action = Delegate.CreateDelegate(field.FieldType, obj, method); 

MyClass obj2 = // the object you want to store the delegate in 

field.SetValue(obj2, action); 
+1

कि असली तेजी से किया गया था, और प्यार से काम करता है। सहायता के लिए धन्यवाद। –

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