У меня есть Delegate
, который указывает на Func<T1, TResult>
, скомпилированный из LambdaExpression
.
Когда я использую delegate.GetMethodInfo().GetParameters()
, я вижу 2 параметра вместо 1!
Итак в часах отладчика MethodInfo
выглядит так:
{TResult lambda_method(System.Runtime.CompilerServices.Closure, System.String)}
Почему здесь 2 параметра? Как получить MethodInfo
с правильным количеством параметров?
Минимальный код воспроизведения:
var param = Expression.Parameter(typeof(string), "x");
var lambda = Expression.Lambda(param, param);
var delegate = lambda.Compile();
Debug.Assert(delegate.GetMethodInfo().GetParameters().Length == 1, "params count should be 1");