방법: 시각화 도우미 작성
이 항목은 다음 언어에 적용됩니다.
Edition |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
Express |
관리 전용 |
||||
Pro, Premium 및 Ultimate |
관리 전용 |
Object 또는 Array를 제외한 모든 관리되는 클래스의 개체에 대해 사용자 지정 시각화 도우미를 작성할 수 있습니다.
디버거 시각화 도우미의 아키텍처는 두 부분으로 구성되어 있습니다.
디버거(debugger) 쪽 코드는 Visual Studio 디버거 내에서 실행됩니다. 디버거 쪽 코드에서는 시각화 도우미의 사용자 인터페이스를 만들고 표시합니다.
디버기(debuggee) 쪽 코드는 Visual Studio가 디버깅하는 프로세스(디버기) 내에서 실행됩니다.
시각화하려는 데이터 개체(예: String 개체)는 디버기 프로세스에 있습니다. 따라서 디버기 쪽에서 디버거 쪽에 데이터 개체를 전달해야 디버거 쪽에서 작성된 사용자 인터페이스를 사용하여 이 개체를 표시할 수 있습니다.
디버거 쪽에서는 이와 같이 시각화할 데이터 개체를 IVisualizerObjectProvider 인터페이스를 구현하는 개체 공급자로부터 전달받습니다. 디버기 쪽에서는 VisualizerObjectSource에서 파생된 개체 소스를 통해 데이터 개체를 전달합니다. 개체 공급자는 데이터를 다시 개체 소스로 전달할 수도 있습니다. 이를 통해 데이터를 표시할 뿐만 아니라 편집도 하는 시각화 도우미를 작성할 수 있습니다. 식 계산기와 통신하고 궁극적으로는 개체 소스와 통신하도록 개체 공급자를 재정의할 수 있습니다.
디버기 쪽과 디버거 쪽에서는 Stream을 통해 서로 통신합니다. 데이터 개체를 Stream으로 serialize하고 Stream을 데이터 개체로 다시 deserialize하기 위한 메서드가 제공됩니다.
디버기 쪽 코드는 DebuggerVisualizer 특성(DebuggerVisualizerAttribute)을 사용하여 지정됩니다.
디버거 쪽에 시각화 도우미 사용자 인터페이스를 만들려면 DialogDebuggerVisualizer에서 상속되는 클래스를 만들고 인터페이스를 표시하도록 DialogDebuggerVisualizer.Show 메서드를 재정의해야 합니다.
IDialogVisualizerService를 사용하여 시각화 도우미의 Windows Forms, 대화 상자 및 컨트롤을 표시할 수 있습니다.
제네릭 형식에 대한 지원은 제한되어 있습니다. 제네릭 형식이 개방형 형식인 경우에만 제네릭 형식을 대상으로 하는 시각화 도우미를 작성할 수 있습니다. DebuggerTypeProxy 특성을 사용하는 경우에도 이 제한은 동일하게 적용됩니다. 자세한 내용은 DebuggerTypeProxy 특성 사용을 참조하십시오.
사용자 지정 시각화 도우미를 작성할 때는 보안 문제를 고려해야 합니다. 시각화 도우미 보안 고려 사항를 참조하십시오.
다음 절차에서는 시각화 도우미를 만들기 위해 수행해야 할 작업에 대한 간략한 개요를 제공합니다. 자세한 내용은 연습: C#에서 시각화 도우미 작성을 참조하십시오.
디버거 쪽 코드를 만들려면
IVisualizerObjectProvider 메서드를 사용하여 디버거 쪽에서 시각화되는 개체를 가져옵니다.
DialogDebuggerVisualizer에서 상속된 클래스를 만듭니다.
DialogDebuggerVisualizer.Show 메서드를 재정의하여 인터페이스를 표시합니다. IDialogVisualizerService 메서드를 사용하여 Windows Forms, 대화 상자 및 컨트롤을 인터페이스의 일부로 표시합니다.
시각화 도우미(DialogDebuggerVisualizer)를 제공하여 DebuggerVisualizerAttribute를 적용합니다.
디버기 쪽 코드를 만들려면
시각화 도우미(DialogDebuggerVisualizer)와 개체 소스(VisualizerObjectSource)를 제공하여 DebuggerVisualizerAttribute를 적용합니다. 개체 소스를 제공하지 않으면 기본 개체 소스가 사용됩니다.
시각화 도우미에서 데이터 개체를 표시할 뿐만 아니라 편집할 수도 있도록 하려면 VisualizerObjectSource에서 TransferData 또는 CreateReplacementObject 메서드를 재정의해야 합니다.