Получение состояния метода использование Отражения

            int entered_num = entered - 0;

Должно быть:

            int entered_num = entered - '0';

Чтобы преобразовать '1' в 1, вам необходимо вычесть «0» (символ, который мы используем для представления цифры ноль), а не 0 ( число ноль). Вычитание нуля ничего не делает.

5
задан Chris 3 October 2008 в 19:04
поделиться

6 ответов

Вы могли достигнуть эту информацию с помощью CLR, отлаживающего API, хотя это не будут простые несколько строки для извлечения его.

3
ответ дан 14 December 2019 в 13:51
поделиться

Я не думаю, что это возможно, можно получить метод и его параметры путем рассмотрения StackTrace.

System.Diagnostics.StackTrace sTrace = new System.Diagnostics.StackTrace(true);
for (Int32 frameCount = 0; frameCount < sTrace.FrameCount; frameCount++){ 
     System.Diagnostics.StackFrame sFrame = sTrace.GetFrame(frameCount);
     System.Reflection.MethodBase thisMethod = sFrame.GetMethod();
     if (thisMethod == currentMethod){
          if (frameCount + 1 <= sTrace.FrameCount){
               System.Diagnostics.StackFrame prevFrame = sTrace.GetFrame(frameCount + 1);
               System.Reflection.MethodBase prevMethod = prevFrame.GetMethod();
          }
     }
}
0
ответ дан 14 December 2019 в 13:51
поделиться

Отражение скажет Вам тип параметров, что метод имеет, но это не поможет обнаружить их значения во время какого-то конкретного вызова. Отражение ничего не говорит Вам о локальных переменных вообще.

Вам нужен вид API что использование отладчика для доступа к этому виду информации.

1
ответ дан 14 December 2019 в 13:51
поделиться

Я не знаю, как это - возможное отражение использования, но взгляд на использование переплетения. SpringFramework. Сеть позволяет Вам определять pointcuts, который может прервать вызовы метода. Другие, вероятно, делают это также.

Вот является ссылка на перехватчик "BeforeAdvice" http://www.springframework.net/docs/1.2.0-M1/reference/html/aop.html#d0e8139

0
ответ дан 14 December 2019 в 13:51
поделиться

Отражение не используется для получения информации от стека. Это читает блок.

Вы могли бы хотеть смотреть на StackTrace

http://msdn.microsoft.com/en-us/library/system.diagnostics.stacktrace.aspx

Хорошая статья здесь:

http://www.codeproject.com/KB/trace/customtracelistener.aspx

2
ответ дан 14 December 2019 в 13:51
поделиться

Ребята из secondlife приостанавливают скрипты и перемещают их между серверами. Это означает, что они должны фиксировать состояние запущенного сценария, включая значения переменных в стеке вызовов.

Их язык сценариев работает на моно, реализации среды выполнения .NET с открытым исходным кодом. Я сомневаюсь, что их решение применимо к обычной среде выполнения .NET, но видео презентации о том, как они это сделали (переход ко второй половине), все еще может быть интересным.

0
ответ дан 14 December 2019 в 13:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: