TL;DR
有谁知道如何用 C# 为 Visual Studio 2012 编写调试可视化工具,以便我可以可视化IEnumerable<string>或string[]类似的对象?  
更多信息
Visual Studio Debug Visualizer 很棒,我经常使用一些流行的 ( Mole )。但是,现在是推出一些自定义可视化工具的时候了。我从一个简单的字符串可视化器开始:
[assembly: System.Diagnostics.DebuggerVisualizer(typeof(My.Namespace.DebuggerSide),
                                            typeof(VisualizerObjectSource),
                                            Target = typeof(string),
                                            Description = "Awesome Visualizer")]
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();
    }
}
VisualizerForm是带有额外控件等的自定义表单...当我构建项目并将 dll 放入My Documents/Visual Studio 11/Visualizers文件夹中并重新启动 Visual Studio 时,当为字符串对象命中断点时,我确实可以看到调试器出现在镜子图标下. 呜呼!到目前为止,一切都很好。
现在我想,而不是可视化string,可视化string[]或IEnumerable<string>类似的对象。但是,当我将程序集属性更改为 时IEnumerable<string>,这不起作用,IEnumerable 对象上什至没有显示玻璃图标。
更新
我可以通过将 TargetType 更改为List<>然后检查是否可以转换为List<string>. 但是,这意味着我必须将我想要调试的所有对象都转换为List并且不能使用IEnumerable<>或 string[]