В C # я пытаюсь использовать выражения linq для генерации вызовов определенных методов. Одним из параметров метода является делегат. У меня есть MethodInfo для метода, который я хочу передать в качестве делегата. Я просто не уверен в синтаксисе linq для создания делегатов.
Это немного надумано, но я надеюсь, что это показывает, что я пытаюсь сделать:
[C#]
delegate void Example();
object instance = ...;
MethodInfo methodToCall = ...;
MethodInfo methodToReference = instance.GetType().GetMethod("Foo");
var lambda = Expression.Call(
methodToCall,
Expression.New(
typeof(Example).GetConstructor(new [] { typeof(object), IntPtr }),
Expression.Constant(instance),
Expression.Constant(/* IntPtr from MethodInfo?? */)));
lambda.Compile()();
Проблема в том, что конструктор для делегата запрашивает IntPtr, я не уверен, как это получить! Есть ли более прямой способ создания объекта делегата, чем пытаться использовать метод выражения New ()?