【问题标题】:Explore object at run time in C#, like showing quick watch?在 C# 中运行时探索对象,例如显示快速观看?
【发布时间】:2014-03-24 08:15:28
【问题描述】:

当我在调试模式下运行 C# 代码时。我可以将对象添加到观察窗口并探索它们,或者我可以在快速观察中查看它们。

我正在创建一个应用程序,我想向用户显示一个带有对象的窗口,他应该能够探索显示的对象。是否可以使用一些现有的 API 来实现这一点。或者我可以选择使用任何语法浏览器,例如 Irony 来实现相同的目的。

如果您需要有关应用程序的更多信息,我将根据用户输入创建一些对象并向用户显示创建的对象,他可以探索以检查一切是否正确,如果需要,他可以修改它们,预期用户- 此应用程序的基础是开发人员本身。

【问题讨论】:

    标签: c# variables reflection grammar watch


    【解决方案1】:

    如果您希望用户能够探索对象数据:

    您可以使用已知的ObjectDumper class 来执行此操作。我从未确认过,但我一直怀疑Immediate Window 使用它。

    来自项目网站:

    ObjectDumper 获取一个普通的 .NET 对象并将其转储为字符串, TextWriter 或文件。便于调试。

    这个用于 .NET 3.5 和 4.0 的类库使您能够获取一个对象 实例并轻松将其内容转储到字符串、调试输出、 TextWriter,或写入文件。便于调试。

    或者自己做:

    foreach(PropertyDescriptor descriptor in TypeDescriptor.GetProperties(obj))
    {
        string name=descriptor.Name;
        object value=descriptor.GetValue(obj);
        Console.WriteLine("{0}={1}",name,value);
    }
    

    【讨论】:

    • 即时窗口只能用于调试。但是当用户安装此应用程序时,立即窗口不可用。您的第二个解决方案也没有为用户提供直观的 UI 来探索对象。我希望像Quick Watch 这样的东西在运行时可供用户使用(而不是在调试时)
    • 使用我在这里为您提供的构建块,我相信自己构建这样一个“Quick-Watch”用户界面可能是一个好的开始。
    • 我已经通过了 ObjectDumper,这不是我们的帮助,我已经在主要问题中提出了建议,irony 是可能的解决方案之一。但我正在寻找对我来说原生可用的东西。
    • 任何想法都是我使用irony irony.codeplex.com 来做这个,能成功吗。
    • 像魅力一样工作。正是我想要的。谢谢=)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-27
    • 2021-01-21
    • 1970-01-01
    • 2015-05-08
    • 1970-01-01
    • 2016-02-24
    • 2021-08-27
    相关资源
    最近更新 更多