現狀可能訪問屬性的子「DebuggerDisplay」屬性?
有兩類:
[DebuggerDisplay(@"One = {One}, two = {Two}")]
public class A
{
public int One { get; set; }
public B Two { get; set; }
}
[DebuggerDisplay(@"Three = {Three}")]
public class B
{
public int Three { get; set; }
}
使用它們:
var a = new A {One = 5, Two = new B {Three = 10}};
調試器的內部,即在a
顯示工具提示值
One = 5,two = {D ebuggerDisplayTest.B}
目標
我想是一樣的東西
一個= 5,二= '三= 10'
我知道這可以通過重寫類B
的ToString()
方法來實現。這只是感覺不對,因爲我只是在應用程序中編寫代碼來進行調試。
我也知道,使用類似於
[DebuggerDisplay(@"One = {One}, two = 'Three = {Two.Three}'")]
會工作的字符串了。這也不適合我,因爲它要求類A
具有類B
的知識。
我想有更多的方法將類型B
的DebuggerDisplay
的值「注入」類A
中的那個類型的實例。
問題
是它在某種程度上可以訪問「有,一個」合成後級的DebuggerDisplay
屬性中成員的DebuggerDisplay
屬性?
更新
也許,我的要求是不可能的,因爲每this SO answer。也許一個好的解決方案是覆蓋類B
中的ToString
,並且執行一些if..else
並且使用Debugger.IsAttached
property僅在調試器內表現不同。
喜歡的東西:
[DebuggerDisplay(@"Three = {Three}")]
public class B
{
public int Three { get; set; }
public override string ToString()
{
if (Debugger.IsAttached)
{
return string.Format(@"Three = {0}", Three);
}
else
{
return base.ToString();
}
}
}
相關:http://stackoverflow.com/questions/8677795/chaining-debuggerdisplay-on-complex-types –