KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have a method call expression and try to invoke the method. I figured out a way, but I have problems in retrieving the parameter values since not every argument is described with a ConstantExpression. Expression<Action<T>> = t => t.DoSomething(Par0, Par1, Par2); MethodCallExpression methodCallExpression = selector.Body as MethodCallExpression; // get the information which is needed to invoke the method from the provided // lambda expression. MethodInfo methodInfo = methodCallExpression.Method; object[] arguments = methodCallExpression.Arguments.OfType<ConstantExpression>() .Select(p => p.Value).ToArray(); // invoke the expression on every item within the enumerable foreach (TSource item in source) { methodInfo.Invoke(item, arguments); } Additionally, I have seen some other ways to invoke the method, now I'm not sure what is the right way to do it. var func = expression.Compile(); var success = func.Invoke(); So my question is, how can I retrieve the method argument values from methodCallExpression.Arguments ? Or is there an easier way to achieve my goal?
Tags (comma-separated)
Save Edits
Cancel