2012-03-30 2 views
2

ich mit dieser Unterschrift ein Verfahren haben, und ein anderes Verfahren, das die verwendete als AktionWie kann ich über Reflektion in C# eine Methode aufrufen, die eine 'Methodengruppe' verwendet, dh. Aktion <> oder Func <>

ProcessFile(Uri uri, Action<Uri> callWhenDone); 

void WhenDone(Uri uri); 

Nun wird Ich versuche, die Invoke Methode zu verwenden, auf MethodInfo (msdn). Aber Parameter ist und Objekt-Array. Welches akzeptiert keine "Methodengruppe".

var methodInfo = myClass.GetType().GetMethod("nameOfMethod"); 

var methodParams = new object { new Uri(), WhenDone }; //<-- unable to just do this 

methodInfo.Invoke(myClass, methodParams); 

Wie gebe ich die Methode Gruppe oder einen Delegierten der Methode process mit Invoke oder ähnliches?

Antwort

2

versuchen, dieses:

var methodParams = new object { new Uri(), (Action<Uri>)((u) => WhenDone(u)) }; 

oder

var methodParams = new object { new Uri(), (Action<Uri>)WhenDone }; 
1

sollte diese Arbeit:

var methodInfo = myClass.GetType().GetMethod("nameOfMethod"); 

Action<Uri> action = WhenDone; 
var methodParams = new object { new Uri(), action }; 

methodInfo.Invoke(myClass, methodParams); 
Verwandte Themen