用于IEnumerable <string>的Visual Studio Visualizer

Roe*_*elF 6 c# debuggervisualizer visual-studio-2012

TL; DR
有谁知道如何写一个调试展台在Visual Studio 2012中,C#,所以我可以想像IEnumerable<string>,string[]或类似物体?

更多信息
Visual Studio Debug Visualizer很棒,我经常使用一些流行的(Mole).但是,现在是推出一些自定义可视化器的时候了.我开始使用一个简单的字符串可视化工具:

[assembly: System.Diagnostics.DebuggerVisualizer(typeof(My.Namespace.DebuggerSide),
                                            typeof(VisualizerObjectSource),
                                            Target = typeof(string),
                                            Description = "Awesome Visualizer")]
Run Code Online (Sandbox Code Playgroud)

DebuggerSide的代码基本上是模板中的示例:

public class DebuggerSide : DialogDebuggerVisualizer
{
    protected override void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider)
    {
        if (windowService == null)
            throw new ArgumentNullException("windowService");
        if (objectProvider == null)
            throw new ArgumentNullException("objectProvider");


        var data = (string)objectProvider.GetObject();

        using (var displayForm = new VisualizerForm(data))
        {
            windowService.ShowDialog(displayForm);
        }
    }

    /// <summary>
    /// Tests the visualizer by hosting it outside of the debugger.
    /// </summary>
    /// <param name="objectToVisualize">The object to display in the visualizer.</param>
    public static void TestShowVisualizer(object objectToVisualize)
    {
        VisualizerDevelopmentHost visualizerHost = new VisualizerDevelopmentHost(objectToVisualize, typeof(DebuggerSide));
        visualizerHost.ShowVisualizer();
    }
}
Run Code Online (Sandbox Code Playgroud)

VisualizerForm是具有额外控件等的自定义表单...当我构建项目并将dll放在My Documents/Visual Studio 11/Visualizers文件夹中,并重新启动visual studio时,我确实可以看到调试器出现在查找字符串图标的断点时.哇噢!到现在为止还挺好.

现在我想,而不是可视化string,可视化string[]IEnumerable<string>类似的对象.但是,当我将程序集属性更改为IEnumerable<string>,这不起作用时,IEnumerable对象上甚至没有显示镜像图标.

更新
我可以通过将TargetType更改为List<>然后检查是否可以强制转换来使其工作List<string>.但是,这意味着我必须将我想要调试的所有对象强制转换为List不能使用IEnumerable<>或者字符串[]

Pet*_*hie 2

可视化工具被记录为

对泛型类型的支持是有限的。仅当泛型类型是开放类型时,您才可以为泛型类型的目标编写可视化工具。

这意味着您无法编写使用封闭构造类型(如IEnumerable<string>.

您是否尝试过将目标类型设置为IEnumerable<>然后检查元素是否属于类型string