Skip to content

Commit

Permalink
Update LambdaParameterWrapper.cs Delegate support for multiple parame…
Browse files Browse the repository at this point in the history
…ters

Delegate support for multiple parameters
  • Loading branch information
hzy-6 committed Jan 27, 2024
1 parent 9788cc7 commit b1a503e
Showing 1 changed file with 11 additions and 0 deletions.
11 changes: 11 additions & 0 deletions src/NReco.LambdaParser/Linq/LambdaParameterWrapper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,17 @@ internal sealed class LambdaParameterWrapper : IComparable, ILambdaValue {
var deleg = (Delegate)obj;

var delegParams = deleg.GetMethodInfo().GetParameters();

// If it is a parameter and the parameter type is object (如果是一个参数 并且 参数类型是 object)
var isParams = delegParams.Length == 1 && delegParams[0].ParameterType == typeof(object);
if (isParams)
{
var resolvedArgList = args
.Select(w => w is LambdaParameterWrapper ? ((LambdaParameterWrapper)w).Value : w)
.ToArray();
return new LambdaParameterWrapper(deleg.DynamicInvoke((object)resolvedArgList), Ctx);
}

if (delegParams.Length != args.Length)
throw new TargetParameterCountException(
String.Format("Target delegate expects {0} parameters", delegParams.Length));
Expand Down

0 comments on commit b1a503e

Please sign in to comment.