2009-05-18 3 views
10

C# 개체 초기화 프로그램 블록에서 예외 디버깅에 대한 조언을 얻은 사람이 있습니까? 개체 이니셜 라이저 구문은 기본적으로 모두 또는 아무것도 아니기 때문에 LINQ 쿼리 내부에서 문제를 해결하기가 특히 어려울 수 있습니다. 객체 생성을 별도의 메소드로 분리하지 않은 경우, 어떤 속성 setter가 예외를 던지고 있는지 확인할 수있는 방법이 있습니까?C# 개체 초기화 프로그램 디버그

답변

13

속성 설정자를 단계적으로 건너 뛰기 옵션을 사용하지 않도록 설정 [속성 초과 및 연산자 (관리 전용)]를 사용하면 속성 설정자로 들어갈 수 있습니다.

그렇지 않으면 가장 좋은 옵션은 종종 LINQ 문 외부에서 디버깅하고 디버깅하는 것입니다. linq에서 익명 형식으로 초기화 매개 변수를 래핑하고 디버깅 목적으로 linq 문 외부에서 개체를 구성 할 수 있습니다.

+0

초기화 매개 변수를 익명 형식으로 바꾸는 것이 무슨 뜻인지 설명해 주시겠습니까? 어떻게 든 익명 형식을 생성자에 전달하거나 속성을 할당하는 유틸리티 팩토리 메서드를 만들 수 있습니까? – technomalogical

+0

지금 당장은 그것의 소리에서 쿼리 결과를 사용하여 개체를 구성하고 있으며 개체 구성에 오류가 있다고 생각합니다. 대신 쿼리 결과를 반환 한 다음 나중에 결과를 사용하여 별도의 단계에서 개체를 빌드하므로 개체 이니셜 라이저 블록을 피할 수 있습니다. –

+0

그러나 어떻게 든 익명 형식을 생성자에 전달할 수 있습니까? – wcm

1

각 속성을 개별적으로 설정하는 개체 이니셜 라이저 블록에서 분리하십시오. 그렇게하면 코드에 실제로 참여할 수 있습니다.

4

예외가 발생하면 중단되도록 VS를 설정 했습니까? (기본값은 처리되지 않은 예외에서만 중단하는 것입니다). 디버그 | 예외 사항을 확인하고 "throw"를 확인하십시오.

그 혼자서는 아마도 귀하의 질문에 대한 답변이 아니지만 디버깅에 도움이 될 수 있습니다.

그 외에도 일시적으로 디버깅 용 코드를 이니셜 라이저 블록에서 분리 한 다음 원할 경우 코드가 작동하면 이니셜 라이저 블록을 복원 할 수 있습니다.