2017-02-22 39 views
0

当我在Visual Studio中调试代码时,可以通过单击悬停在我选择的变量上时弹出的叠加层来更改变量的值。显示该值的标签变为文本框,我可以输入一个新的值,只要我按回车键就可以分配该值。在调试时更改我自己类型的值

为了支持这种工作流程,我必须在自己的类型中实现什么?目前Visual Studio对我说,没有从字符串到我的类型的隐式转换。如果我添加这样一个隐式运算符,它可以正常工作,但是有另一种实现方法,而不必将隐式转换添加到我的类型中(嗯,我可以将转换标记为[Obsolete],以便没有人可以从代码调用它 - 但这不是我猜测的最清洁的方式)就像[DebuggerDisplay]可以实现在调试时显示其他内容,而使ToString()独立于任何业务逻辑需求?

+1

像这样的调试真的是最后一种类型的东西,你真的需要多久做一次? – DavidG

+0

如果有一种机制只需要一个属性来说明要执行转换的函数,那么为什么不使用它...... – David

回答

1

其显示值的标签变成一个文本框,我可以进入它获取,只要我打输入分配一个新值。

您展示的是在代码编辑器中的数据工具提示的解决方法,这是我们编辑VS调试过程中的价值通常的方式。

我知道其他的解决方法是:

(1)定制与扩展natvis调试视图。

例如,您可以创建像在以下博客样本的自定义数据类型的类型可视化:

https://blogs.msdn.microsoft.com/vcblog/2012/07/12/debugger-type-visualizers-for-c-in-visual-studio-2012/

(2)使用一定的调试窗口像观察窗口或其他人,但我的理解这并不方便,我的意思是使用工具提示(您提供的方式)会更好。

https://msdn.microsoft.com/en-us/library/aa6fy2x5(v=vs.120).aspx

希望它可以提供有用的信息或路径。

+0

您在(1)中提供的链接与C++有关。该方法是否也适用于C#? – David

+0

@大卫,好问题。我们无法从C#项目加载.natvis文件,但它确实存在限制。但是我们可以用C#编写一个Visualizer:https://msdn.microsoft.com/en-us/library/ms164759.aspx。其他成员也只是在使用DebuggerTypeProxy的时候提出了类似的问题。 http://stackoverflow.com/questions/41764714​​/how-to-use-visual-studio-text-visualizer-for-custom-types。没有找到其他更好的解决方法。 –

+0

@David,这个问题呢?你是否可以从我以前的建议中获得有用的信息?任何更新,请随时分享:) –

相关问题