2017-02-22 68 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,這個問題呢?你是否可以從我以前的建議中獲得有用的信息?任何更新,請隨時分享:) –

相關問題