wie übergebene Methodenparameter aufgelistet werden
Man kann die aufgerufenen Methodenparametertypen / Informationen wie folgt aufzählen:
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();
}
}
Aber gibt es eine Möglichkeit, das tatsächliche Objekt jedes Parameters abzurufen?
BEARBEITEN: Mein Ziel ist es, alle Parameter aufzulisten und ihre Werte zu erhalten. Mit LinQ Expressions kann man den Parameterwert wie folgt erhalten:
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);
}
Aber was ich gerne machen würde, ist so etwas wie:
foreach (fooObject o in thisMethod.GetParameterObjects())
{
object someValue = GetParameterValue(() => fooObject);
}
Und haben damit eine generische Methode zur Erfassung aller Parameter und deren Werte.