はAction
を使用して行うことができないが、ラムダ式はまたExpression<Action>
として扱うことができ、それが可能となります。それは我々がメソッド呼び出しを持っている知識を使用して、我々はパラメータとして定数を使用すること:コードは以下の式のみのこの種のために働くことを
注意。
public class Program
{
public static void Main(string[] args)
{
var values = GetParams(() => Test(1, 2));
foreach (var v in values)
System.Diagnostics.Debug.Print(v.ToString());
}
private object[] GetParams<T>(Expression<Func<T>> expr)
{
var body = (MethodCallExpression)expr.Body;
var args = body.Arguments;
return args.Select(p => ((ConstantExpression)p).Value).ToArray();
}
public int Test(int arg1, int arg2)
{
return arg1 + arg2;
}
}
それは私の最初の概念でした。私はアクションをシリアライズするために必要でした。 – Martin