Как мне с помощью отражения в C # вызвать метод, который принимает «группу методов» т.е.Действие <> или Func <> - PullRequest
2 голосов
/ 30 марта 2012

У меня есть метод с этой подписью, и другой метод, который будет использоваться как Действие

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

void WhenDone(Uri uri);

Теперь я пытаюсь использовать Invoke method on MethodInfo ( msdn ).Но , параметры - это и массив объектов.Который не принимает «группу методов».

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

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

methodInfo.Invoke(myClass, methodParams);

Как передать группу методов или делегат методу ProcessFile, используя Invoke или аналогичный?

Ответы [ 2 ]

2 голосов
/ 30 марта 2012

попробуйте это:

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

или

var methodParams = new object { new Uri(), (Action<Uri>)WhenDone }; 
1 голос
/ 30 марта 2012

Это должно работать:

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

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

methodInfo.Invoke(myClass, methodParams);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...