Tak, można. Jedną z opcji jest użycie DebuggerDisplayAttribute
atrybuty wyświetlania Debugger pozwalają deweloper typu, który określa i najlepiej rozumie zachowania wykonania tego typu, również określić, jakie tego typu będzie wyglądać, gdy jest wyświetlany w debugger.
[DebuggerDisplay("The count value in my class is: {count}")]
class MyClass
{
public int count { get; set; }
}
EDIT: Po wyjaśnienie Rozumiałem, co chcesz. Jest możliwe, aby zrobić swój własny multi-liniowy wizualizer, ale prawdopodobnie nie podoba mi się sposób to zrobić :)
- trzeba dodać odwołanie do
Microsoft.VisualStudio.DebuggerVisualizers.dll
. Znalazłem go w Dodaj odniesienie -> Złożenia -> Lista rozszerzeń
- Twoja potrzeba stworzenia nowej klasy i dziedziczenia klasy DialogDebuggerVisualizer. Zastąp metodę Pokaż i wyświetl wymaganą zawartość.
- Mark klasa jako
Serializible
- dodawania odniesienie do niestandardowego Visualizer
Oto przykładowy kod:
using System.Windows.Forms;
using Microsoft.VisualStudio.DebuggerVisualizers;
[assembly: DebuggerVisualizer(typeof(MyClassVisualizer), Target = typeof(MyClass), Description = "My Class Visualizer")]
namespace MyNamespace
{
[Serializable]
public class MyClass
{
public int count { get; set; } = 5;
}
public class MyClassVisualizer : DialogDebuggerVisualizer
{
protected override void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider)
{
MyClass myClass = objectProvider.GetObject() as MyClass;
if (objectProvider.IsObjectReplaceable && myClass != null)
{
StringBuilder sb = new StringBuilder();
sb.AppendLine("Here is");
sb.AppendLine("your multi line");
sb.AppendLine("visualizer");
sb.AppendLine($"of MyClass with count = {myClass.count}");
MessageBox.Show(sb.ToString());
}
}
}
}
Następnie pojawi się lupa i po kliknięciu go wynik będzie wyglądać tak:
Może [Pokaż proxy debugger] (https://msdn.microsoft.com/en-us/library/d8eyd8zc.aspx) może być przydatna w przypadku? –