2011-06-22 49 views
7

đơn giản trường hợp:Hook-up một MethodInfo đến một trường đại biểu (FieldInfo)

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

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

Như tôi đã có được cả hai AnotherClass.MyAction(..) phương pháp và MyClass.MyAction đại biểu thông qua phản ánh, tôi kết thúc với một cặp MethodInfo/FieldInfo lớp nơi tôi không thể kết nối phương thức với đại biểu. Ngoài ra tôi nhận được cả tên phương thức/đại biểu từ một chuỗi, tôi không thể truy cập các trường/phương thức của cá thể mà không có sự phản chiếu. Bất cứ ai có thể cho tôi một bàn tay trong này, hoặc là loại này một hook-up có thể ở tất cả?

Trả lời

8

Bạn nên nhìn vào Delegate.CreateDelegate, cụ thể:

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

Đó là thật nhanh, và các công trình ngọt ngào. Cảm ơn đã giúp đỡ. –

Các vấn đề liên quan