一种在观察窗口中获取对象并"编写"它的方法

Vac*_*ano 9 .net c# visual-studio-addins visual-studio-2010 visual-studio

我有一个场景,我有一个相当复杂的对象,我从数据库加载.

该对象有几个嵌套对象.在我调试的过程中,我找到了一个我希望在单元测试中使用的对象实例.现在我必须手动创建这个对象.由于它相当复杂,需要一段时间.

如果有办法告诉监视窗口将此变量输出到文本窗口(或剪贴板),我的单元测试时间会更好.

似乎所有需要的信息都在观察窗口中.

我不希望它创建使用语句或任何这样的东西,只需使用它具有的类信息并创建new语句(嵌套为我的对象的许多级别).

那里有没有这样的工具?(如果没有,也许我只是找到了发财的方法?)

Mig*_*elo 2

据我所知,没有这样的工具......执行此操作非常复杂,因为:

  • 对象可能具有循环引用,因此对您可以访问的深度没有限制
  • 可能存在对单例对象的引用
  • 可能存在对在构造函数上采用参数的对象的引用,它如何知道如何构造该对象?
  • 或对没有公共构造函数且由工厂构建的对象的引用
  • 或对 COM 对象的引用
  • 或对仅在运行时才有意义的对象的引用:例如文件流

一种简单的解决方案:使对象可序列化(例如,序列化为 xml 或 json),对其进行序列化,将序列化字符串复制到单元测试中,然后在单元测试中对其进行反序列化。

不太简单的解决方案:实现一个调试器可视化器,带有可视化器对象源: 调试器可视化器和“类型未标记为可序列化”

这样您就可以创建一个窗口,并显示序列化的对象...您可能必须使用反射来读取所有对象属性和子对象等。

  • 好点。我可以看出,制作一个万无一失的工具是不可能的。但如果它能像所有构造函数都是无参数和公共的一样编写脚本,我会很高兴。如果有复杂的构造函数,那么我可以返回并根据需要添加工厂或参数。 (2认同)