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

时间:2012-11-28 17:18:56

标签: c# .net visual-studio-2010 visual-studio visual-studio-addins

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

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

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

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

我不希望它创建使用语句或任何此类事物,只需使用它拥有的类信息并创建new语句(嵌套为我的对象所用的多个级别)。

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

1 个答案:

答案 0 :(得分:2)

我知道没有这样的工具......这样做很复杂,因为:

  • 对象可能具有循环引用,因此对可以进行的深度没有限制
  • 可以引用单件对象
  • 可能会引用带有构造函数参数的对象,它怎么知道如何构造对象呢?
  • 或对没有公共构造函数的对象的引用,而是由工厂构建的
  • 或对COM对象的引用
  • 或仅对运行时有意义的对象的引用:例如文件流

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

解决方案不是那么简单:使用可视化对象源实现调试器可视化工具: Debugger Visualizer and "Type is not marked as serializable"

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