// Decompiled with JetBrains decompiler // Type: Microsoft.VisualStudio.DebuggerVisualizers.ExtensionProviders.IEnumerableVisualizerProvider // Assembly: Microsoft.VisualStudio.DebuggerVisualizers.ExtensionProviders, Version=18.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a // MVID: 98A3FADF-73D8-4308-9C72-EE68F73E4141 // Assembly location: C:\Program Files\Microsoft Visual Studio\18\Professional\Common7\IDE\CommonExtensions\Platform\Debugger\Visualizers\Microsoft.VisualStudio.DebuggerVisualizers.ExtensionProviders.dll using Microsoft.Internal.VisualStudio.Shell.Interop; using Microsoft.VisualStudio.Debugger.IEnumerableVisualizer; using Microsoft.VisualStudio.Debugger.TabularDataUIShared.WPF; using Microsoft.VisualStudio.Extensibility; using Microsoft.VisualStudio.Extensibility.DebuggerVisualizers; using Microsoft.VisualStudio.Extensibility.VSSdkCompatibility; using Microsoft.VisualStudio.RpcContracts.DebuggerVisualizers; using Microsoft.VisualStudio.RpcContracts.RemoteUI; using Microsoft.VisualStudio.Shell; using Microsoft.VisualStudio.Shell.Interop; using System; using System.Diagnostics; using System.Threading; using System.Threading.Tasks; using System.Windows; #nullable enable namespace Microsoft.VisualStudio.DebuggerVisualizers.ExtensionProviders; [VisualStudioContribution] internal class IEnumerableVisualizerProvider : DebuggerVisualizerProvider { public IEnumerableVisualizerProvider( VisualStudioExtensibility extensibility, TraceSource traceSource) { } public virtual DebuggerVisualizerProviderConfiguration DebuggerVisualizerProviderConfiguration { get { return new DebuggerVisualizerProviderConfiguration("%IEnumerableVisualizer.DisplayName%", "System.Collections.Generic.IEnumerable`1, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089") { VisualizerObjectSourceType = new VisualizerObjectSourceType(typeof (IEnumerableVisualizerSource)), Style = (VisualizerStyle) 1 }; } } public virtual async Task CreateVisualizerAsync( VisualizerTarget visualizerTarget, CancellationToken cancellationToken) { IEnumerableViewModel viewModel = new IEnumerableViewModel(visualizerTarget.ObjectSource, visualizerTarget.OriginalVisualizedExpression, VsTaskLibraryHelper.WithPriority(ThreadHelper.JoinableTaskFactory, (VsTaskRunContext) 6)); visualizerTarget.VisualizedExpressionChanged += new Func(((TabularDataViewModel) viewModel).VisualizerTarget_VisualizedExpressionChangedAsync); visualizerTarget.Changed += new Func(((TabularDataViewModel) viewModel).VisualizerTarget_StateChangedAsync); await viewModel.InitializeAsync(); await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(new CancellationToken()); IVsDebugger debugger = await ServiceExtensions.GetServiceAsync(AsyncServiceProvider.GlobalProvider, cancellationToken); bool flag = (await ServiceExtensions.GetServiceAsync(AsyncServiceProvider.GlobalProvider, cancellationToken)).IsFeatureEnabled("Debugger.EnableVisualizerDataTips", true); IEnumerableVisualizerControl visualizerControl1 = new IEnumerableVisualizerControl(); visualizerControl1.DataContext = (object) viewModel; visualizerControl1.Debugger = debugger; visualizerControl1.AreDataTipsEnabled = flag; IEnumerableVisualizerControl visualizerControl2 = visualizerControl1; viewModel.ViewHelper = (IViewHelper) visualizerControl2; IRemoteUserControl visualizerAsync = (IRemoteUserControl) new WpfControlWrapper((FrameworkElement) visualizerControl2); viewModel = (IEnumerableViewModel) null; debugger = (IVsDebugger) null; return visualizerAsync; } protected virtual Task InitializeAsync(CancellationToken cancellationToken) { return ((ExtensionPart) this).InitializeAsync(cancellationToken); } }