Files
DebugVisualizerExtension/MicroSoft_IEnumerableVisualizer/IEnumerableVisualizer.cs
T

72 lines
3.3 KiB
C#
Raw Normal View History

2026-04-02 10:40:46 +02:00
// Decompiled with JetBrains decompiler
// Type: Microsoft.VisualStudio.Debugger.IEnumerableVisualizer.IEnumerableVisualizer
// Assembly: IEnumerableVisualizer.UI, Version=18.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
// MVID: 8D605BCB-B575-4FCD-B6C8-446C06150F34
// Assembly location: C:\Program Files\Microsoft Visual Studio\18\Professional\Common7\IDE\CommonExtensions\Platform\Debugger\Visualizers\IEnumerableVisualizer.UI.dll
using Microsoft.VisualStudio.DebuggerVisualizers;
using Microsoft.VisualStudio.DebuggerVisualizers.Common;
using Microsoft.VisualStudio.OutOfProcessVisualizers;
using Microsoft.VisualStudio.Shell;
using Microsoft.VisualStudio.Shell.Interop;
using Microsoft.VisualStudio.Utilities;
using System;
using System.Globalization;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Forms;
#nullable enable
namespace Microsoft.VisualStudio.Debugger.IEnumerableVisualizer;
public class IEnumerableVisualizer : DialogDebuggerVisualizer
{
public IEnumerableVisualizer()
: base((FormatterPolicy) 1)
{
}
protected internal virtual void Show(
#nullable disable
IDialogVisualizerService windowService,
IVisualizerObjectProvider objectProvider)
{
if (!(windowService is IWin32Window win32Window))
throw new ApplicationException("This debugger does not support modal visualizers");
using (DpiAwareness.EnterDpiScope((DpiAwarenessContext) -4))
{
IEnumerableViewModel viewModel = new IEnumerableViewModel((IAsyncVisualizerObjectProvider) objectProvider, VsTaskLibraryHelper.WithPriority(ThreadHelper.JoinableTaskFactory, (VsTaskRunContext) 6));
viewModel.UINormalPriorityJTF.Run((Func<Task>) (async () => await viewModel.InitializeAsync()));
IEnumerableVisualizerControl visualizerControl1 = new IEnumerableVisualizerControl();
visualizerControl1.DataContext = (object) viewModel;
visualizerControl1.Debugger = (IVsDebugger) null;
visualizerControl1.AreDataTipsEnabled = false;
IEnumerableVisualizerControl visualizerControl2 = visualizerControl1;
OutOfProcessVisualizerModalDialogViewModel modalDialogViewModel = new OutOfProcessVisualizerModalDialogViewModel((OutOfProcessVisualizer) null, string.Format((IFormatProvider) CultureInfo.CurrentCulture, Resources.G_TitlebarCaption, (object) viewModel.DataObjectType.ToString()), Guid.Empty, string.Empty, string.Empty, viewModel.UINormalPriorityJTF);
((OutOfProcessVisualizerViewModel) modalDialogViewModel).MainContent = (IDisposable) visualizerControl2;
((OutOfProcessVisualizerViewModel) modalDialogViewModel).DialogState = (DialogState) 1;
ModalVisualizerDialog visualizerDialog = new ModalVisualizerDialog();
((FrameworkElement) visualizerDialog).DataContext = (object) modalDialogViewModel;
Window window = (Window) visualizerDialog;
try
{
if (viewModel.FatalExceptionCaught)
return;
Microsoft.VisualStudio.Debugger.IEnumerableVisualizer.IEnumerableVisualizer.ShowWpfDialog(window, win32Window.Handle);
}
catch (Exception ex)
{
if (viewModel.FatalExceptionCaught)
return;
throw;
}
}
}
private static void ShowWpfDialog(Window window, IntPtr hwndParent)
{
WindowExtensions.SetOwner(window, hwndParent);
window.ShowDialog();
}
}