.NET 리플렉션을 사용하여 모든 매개 변수/로컬 변수의 값을 캡처하는 방법이 있습니까?리플렉션을 사용한 메서드 상태 캡처
답변
당신은되지 않습니다 불구하고 CLR debugging API를 사용하여이 정보를 얻을 수 있습니다 그것을 추출하는 간단한 몇 줄.
관리되는 디버거 샘플 : http://www.microsoft.com/downloads/details.aspx?familyid=38449a42-6b7a-4e28-80ce-c55645ab1310&displaylang=en –
리플렉션은 스택에서 정보를 캡처하는 데 사용되지 않습니다. 그것은 어셈블리를 읽습니다.
당신은
http://msdn.microsoft.com/en-us/library/system.diagnostics.stacktrace.aspx
좋은 기사 여기 스택 추적에서 살펴 봐야 할 수 있습니다 :
http://www.codeproject.com/KB/trace/customtracelistener.aspx
CodeProject 기사에서 매개 변수 이름을 표시하지만 값이 아닌 –
반사는 메서드에있는 매개 변수 유형을 알려주지 만 특정 호출 중에 값을 발견하는 데 도움이되지 않습니다. 리플렉션은 지역 변수에 대해 전혀 알려주지 않습니다.
디버거에서 이러한 종류의 정보에 액세스하는 데 필요한 API가 필요합니다.
저는 이것이 가능하지 않다고 생각합니다. 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();
}
}
}
리플렉션을 사용하는 것이 어떻게 가능한지 모르지만 짜기를 사용합니다. SpringFramework.Net을 사용하면 메서드 호출을 가로 챌 수있는 pointcut을 정의 할 수 있습니다. 다른 사람들도 그렇게 할 것입니다.
여기 secondlife에서 http://www.springframework.net/docs/1.2.0-M1/reference/html/aop.html#d0e8139
의 사람들 스크립트를 중단하고 서버 사이를 이동 "BeforeAdvice"인터셉터에 대한 링크입니다. 이는 호출 스택의 변수 값을 포함하여 실행중인 스크립트의 상태를 캡처해야 함을 의미합니다.
그들의 스크립팅 언어는 .NET 런타임의 오픈 소스 구현 인 모노에서 실행됩니다. 나는 그들의 솔루션이 일반 .NET 런타임에 적용될 지 의심 스럽지만 video of the presentation on how they did it (후반으로 건너 뛰기)은 여전히 흥미로울 수 있습니다.
- 1. C#을 사용한 사운드 캡처
- 2. 네트워크 상태 변경 이벤트 캡처
- 3. 리플렉션을 사용하여 제네릭 오버로드 된 메서드 호출
- 4. 리플렉션을 사용하여 클래스 인스턴스화 및 메서드 호출
- 5. 리플렉션을 사용하여 클래스 메서드 가져 오기
- 6. 리플렉션을 사용하여 추상 클래스의 개인 메서드 테스트
- 7. Vista UAC를 사용한 화면 캡처 및 이벤트
- 8. 일반 웹캠을 사용한 실시간 마커리스 모션 캡처
- 9. iPhone에서 AVFoudation을 사용한 연속 캡처 이미지
- 10. BeginInvoke 메서드 및 세션 상태
- 11. 개체의 모든 메서드/메시지 호출 캡처
- 12. 상태 디자인 패턴을 사용한 재 설계 - 의심
- 13. SQL을 사용한 상태 변경 추적/쿼리
- 14. LINQ 식을 사용한 동적 메서드 호출
- 15. IntelliJ의 GroovyDSL을 사용한 동적 메서드 정의
- 16. Moq을 사용한 개인 메서드 테스트가 작동하지 않습니다.
- 17. 제네릭을 사용한 C# 메서드 다형성의 성능
- 18. WPF에서 공유 객체를 사용한 원격 메서드 호출?
- 19. 리플렉션을 사용하여 _Lambda $ __ 2를 메서드 이름으로 사용하는 이유
- 20. 클래스 멤버 변수, 메서드 및 해당 상태
- 21. AASM을 사용하여 상태 변경시 메서드 호출
- 22. 화면 캡처를위한 가장 효율적인 방법은 무엇입니까? DirectX를 사용한 화면 캡처?
- 23. T4 템플릿을 사용한 리플렉션
- 24. UITableViewCell에서 터치 이벤트 캡처 후 didSelectRowAdTindePath 메서드 입력
- 25. 리플렉션을 통한 메소드 인터셉트
- 26. 화면 캡처 웹캠으로 화면 캡처?
- 27. Android + 화면 캡처 비디오 캡처
- 28. captureChisibleTab 캡처 화면 캡처 삭제
- 29. 웹 페이지에서 이벤트 캡처
- 30. 리플렉션을 사용하여 POJO에서 가치를 얻는 방법?
당신이 얻으려고하는 것에 대한 유스 케이스를 제공 할 수 있습니까? – Alex