Aktualny stanCzy możliwy jest dostęp do podrzędnego atrybutu właściwości "DebuggerDisplay"?
Posiadające dwie klasy:
[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; }
}
korzystania z nich:
var a = new A {One = 5, Two = new B {Three = 10}};
Wewnątrz debugger, wartość podpowiedź, która jest wyświetlana na a
jest
Jeden = 5, dwa = {D ebuggerDisplayTest.B}
bramki
Co chciałbym coś takiego jak
One = 5, dwa = 'Trzy = 10'
wiem to można to osiągnąć, przesłoniwszy metodę ToString()
klasy B
. To po prostu nie jest w porządku, ponieważ piszę kod w mojej aplikacji tylko do debugowania.
wiem też, że używanie znaków podobny do
[DebuggerDisplay(@"One = {One}, two = 'Three = {Two.Three}'")]
będzie działać, too. To również nie wydaje mi się właściwe, ponieważ wymagałoby, aby klasa A
posiadała wiedzę o klasie B
.
Chciałbym mieć więcej możliwości "wstrzyknięcia" wartości DebuggerDisplay
typu B
do instancji tego typu w klasie A
.
Pytanie
Czy jest jakiś sposób możliwe do uzyskania dostępu do atrybut członka DebuggerDisplay
wewnątrz atrybutem „ma-a” czeniu klasy DebuggerDisplay
?
Aktualizacja
Prawdopodobnie mój wymóg nie jest możliwe, ponieważ za this SO answer. Może dobrym rozwiązaniem byłoby przesłonięcie ToString
w klasie B
i wykonanie niektórych if..else
i użycie Debugger.IsAttached
property, aby zachowywać się inaczej tylko wewnątrz debuggera.
Coś jak:
[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();
}
}
}
Powiązane: http://stackoverflow.com/questions/8677795/chaining-debuggerdisplay-on-complex- typeses –