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<>或者字符串[]
可视化工具被记录为
对泛型类型的支持是有限的。仅当泛型类型是开放类型时,您才可以为泛型类型的目标编写可视化工具。
这意味着您无法编写使用封闭构造类型(如IEnumerable<string>.
您是否尝试过将目标类型设置为IEnumerable<>然后检查元素是否属于类型string?
| 归档时间: |
|
| 查看次数: |
1980 次 |
| 最近记录: |