我有這種類型的表達式:
Expression<Action<T>> expression
如何從此表達式中獲取參數名稱(可選:和值)?
例:
o => o.Method("value1", 2, new Object());
名稱可以是str_par1,int_par2,obj_par3
Expression<Action<Thing>> exp = o => o.Method(1, 2, 3);
var methodInfo = ((MethodCallExpression)exp.Body).Method;
var names = methodInfo.GetParameters().Select(pi => pi.Name);
您可以從Parameters
屬性中獲取參數名稱。
例如:
Expression<Action<string, int>> expr = (a, b) => (a + b).ToString();
var names = expr.Parameters.Select(p => p.Name); //Names contains "a" and "b"
對於第二部分,lambda表達式只是未編譯的函數。
在編譯表達式並使用某些值調用委託之前,它們的參數沒有值。
如果你取lambda表達式i => i.ToString()
,那麼有哪些參數值?