Uno puede enumerar el llamado método de los tipos de parámetros/información como esta:método de cómo enumerar pasan los parámetros
private void SomeMethod(int thisValue, string thatValue)
{
StackTrace stackTrace = new StackTrace();
foreach (ParameterInfo pInfo in stackTrace.GetFrame(0).GetMethod().GetParameters())
{
string name = pInfo.Name;
string type = pInfo.GetType().ToString();
}
}
Pero, ¿hay alguna manera de conseguir el objeto real de cada parámetro?
EDIT: Mi objetivo es enumerar todos los parámetros y obtener sus valores. mediante LINQ expresiones, se puede obtener el valor del parámetro de este modo:
private void SomeMethod(int thisValue, string thatValue)
{
object valueOfThis = GetParameterValue(() => thisValue);
object valueOfThat = GetParameterValue(() => thatValue);
}
private object GetParameterValue<T>(Expression<Func<T>> expr)
{
var body = ((MemberExpression)expr.Body);
return ((FieldInfo)body.Member).GetValue(((ConstantExpression)body.Expression).Value);
}
Pero lo que me gustaría hacer es algo como:
foreach (fooObject o in thisMethod.GetParameterObjects())
{
object someValue = GetParameterValue(() => fooObject);
}
y por lo tanto tener un método genérico para la recolección de todos los parámetros y sus valores
¿Está intentando crear un seguimiento de pila que contenga los valores de parámetro reales? –
Uhm, las instancias de parámetros reales están ahí en el método ... –
@Mark: mi pensamiento también, pero viendo que es obvio que está buscando algo más general, algo que le permita obtener los valores de cualquier marco de pila (Supongo ...) –