2011-06-22 12 views
7

Prosta sprawa:Hook-up MethodInfo do pola delegata (FieldInfo)

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

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

Jak dostać zarówno AnotherClass.MyAction(..) metoda i MyClass.MyAction delegata poprzez refleksję, że skończę z parą MethodInfo/FieldInfo klasach, gdzie nie może podłączyć metody do delegata. Otrzymuję również nazwy metod/delegatów z ciągu, nie mogę uzyskać dostępu do pól/metod instancji bez refleksji. Czy ktokolwiek może mi w tym pomóc, czy w ogóle jest to możliwe?

Odpowiedz

8

Należy spojrzeć na Delegate.CreateDelegate, w szczególności:

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

To było naprawdę szybko i działa słodko. Dzięki za pomoc. –

Powiązane problemy