首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调试器可视化工具[Visual Studio2010]- System.Linq.Expressions.Expression -不显示放大镜

调试器可视化工具[Visual Studio2010]- System.Linq.Expressions.Expression -不显示放大镜
EN

Stack Overflow用户
提问于 2011-01-23 01:09:33
回答 2查看 864关注 0票数 3

我一直在尝试为linq表达式构建一个调试器可视化工具。

我知道一个已经存在,但我想创建我自己的,并添加额外的功能。

我做了这个快速原型。放大镜不会显示;但是,如果我将一行代码更改为"Target = typeof(System.String)",放大镜就会显示出来。

任何帮助都将不胜感激。

代码语言:javascript
复制
using System.IO;
using System.Windows.Forms;
using Microsoft.VisualStudio.DebuggerVisualizers;

[assembly: System.Diagnostics.DebuggerVisualizer(
    typeof(VisualizerPrototype.MyDebuggerVisualizer),
    typeof(VisualizerPrototype.MyDebuggerVisualizerObjectSource),
    Target = typeof(System.Linq.Expressions.Expression),
    Description = "My Debugger Visualizer")]
namespace VisualizerPrototype
{
    public class MyDebuggerVisualizer : DialogDebuggerVisualizer
    {
        protected override void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider)
        {
            var text = string.Empty;
            using (var sr = new StreamReader(objectProvider.GetData()))
            {
                text = sr.ReadToEnd();
            }

            MessageBox.Show(text);
        }
    }

    public class MyDebuggerVisualizerObjectSource : VisualizerObjectSource
    {
        public override void GetData(object target, System.IO.Stream outgoingData)
        {
            var sw = new StreamWriter(outgoingData);
            sw.WriteLine("YO");
            sw.Flush();
        }
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-24 01:29:55

对于将来阅读这篇文章的任何人来说,我发现了问题的根源。调试器可视化工具的目标类型必须是运行时类型,而不是继承类型。

代码语言:javascript
复制
Target = typeof(System.Linq.Expressions.ConstantExpression)
Expression expr = Expression.Constant(1); //visualizer shows up

Target = typeof(System.Linq.Expressions.Expression)
Expression expr = Expression.Constant(1); //visualizer doesn't show up
票数 2
EN

Stack Overflow用户

发布于 2011-10-18 18:12:17

VB:上试试这个

代码语言:javascript
复制
Target = GetType(Expression(Of ))

或者这个是C#的:

代码语言:javascript
复制
Target = typeof(Expression<>)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4769252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档