Использование Reflection для анализа параметров и их значений - PullRequest
2 голосов
/ 27 января 2010

Я видел старые посты здесь на SO, около года назад, что означало бы, что они на самом деле не охватывают .NET 4 или, возможно, даже 3.5 по этой теме. Так что вот так.

Если вы с отражением должны были выбрать параметры для текущего метода

ParameterInfo[] methodParams = MethodInfo.GetCurrentMethod().GetParameters();

Циклический просмотр каждого параметра позволит вам выбрать имя параметра, однако есть только «DefaultValue», которое, я думаю, существует из-за новых динамических параметров в .NET 4.

Однако мой вопрос таков; Разве все еще невозможно получить значения параметров метода, не копаясь в API отладчика?

Я знаю, что может быть недостаток дизайна, если вам даже нужно подумать об этом.

1 Ответ

3 голосов
/ 27 января 2010

Невозможно получить текущие значения параметров без использования API профилирования.

MethodInfo объекты для каждого метода, а не для вызова.Невозможно соединить MethodInfo с данным фреймом стека.

Кроме того, в сборках Release можно оптимизировать локальные параметры, поэтому значения не обязательно существуют .

Свойство DefaultValue может быть не-null в параметрах VB, которое уже поддерживает значения по умолчанию.

...