为调用方法 C# 提供的参数数量不正确
Incorrect number of arguments supplied for call to method C#
我有一个方法需要 2 个参数。我想在运行时建立一个方法,它会默认调用这个方法并传递一个参数。另一个参数将在新函数中传递。
我试图创建调用此方法的 lambda 表达式,但出现错误:为调用方法提供的参数数量不正确。
static class Program
{
static void Main(string[] args)
{
var method = typeof(Program).GetMethod("Method");
// here i want to set first parameter as "parameter1" when new method will be called
var lambda = Expression.Lambda<Func<string, string>>(Expression.Call(method, Expression.Constant("parameter1")));
var adapter = lambda.Compile();
// and here i wanna pass only one agrument - second (parameter2)
var result = adapter("parameter2");
// expected result "parameter1 ---- parameter2"
}
public static string Method(string parameter1, string parameter2)
{
return $"{parameter1} ---- {parameter2}";
}
我只想在调用函数时传递第二个参数。首先必须自动指定。
您定义了常量,但您还需要定义其他参数以便将其提供给 Method
:
var method = typeof(Program).GetMethod("Method");
// here i want to set first parameter as "parameter1" when new method will be called
var param = Expression.Parameter(typeof(string));
var call = Expression.Call(method, Expression.Constant("parameter1"), param);
var lambda = Expression.Lambda<Func<string, string>>(call, param);
var adapter = lambda.Compile();
// and here i wanna pass only one agrument - second (parameter2)
var result = adapter("parameter2");
当然,我会假设您有动态执行此操作的真实用例。否则你可以写:
Func<string, string> adapter = p => Method("parameter1", p);
我有一个方法需要 2 个参数。我想在运行时建立一个方法,它会默认调用这个方法并传递一个参数。另一个参数将在新函数中传递。
我试图创建调用此方法的 lambda 表达式,但出现错误:为调用方法提供的参数数量不正确。
static class Program
{
static void Main(string[] args)
{
var method = typeof(Program).GetMethod("Method");
// here i want to set first parameter as "parameter1" when new method will be called
var lambda = Expression.Lambda<Func<string, string>>(Expression.Call(method, Expression.Constant("parameter1")));
var adapter = lambda.Compile();
// and here i wanna pass only one agrument - second (parameter2)
var result = adapter("parameter2");
// expected result "parameter1 ---- parameter2"
}
public static string Method(string parameter1, string parameter2)
{
return $"{parameter1} ---- {parameter2}";
}
我只想在调用函数时传递第二个参数。首先必须自动指定。
您定义了常量,但您还需要定义其他参数以便将其提供给 Method
:
var method = typeof(Program).GetMethod("Method");
// here i want to set first parameter as "parameter1" when new method will be called
var param = Expression.Parameter(typeof(string));
var call = Expression.Call(method, Expression.Constant("parameter1"), param);
var lambda = Expression.Lambda<Func<string, string>>(call, param);
var adapter = lambda.Compile();
// and here i wanna pass only one agrument - second (parameter2)
var result = adapter("parameter2");
当然,我会假设您有动态执行此操作的真实用例。否则你可以写:
Func<string, string> adapter = p => Method("parameter1", p);