Можно ли заставить визуализатор текста отладчика отображать выходные данные, которые выровнены так, чтобы соответствовать выводу консоли в VS2019? Или даже какой-то другой тип визуализатора, если уместно? У объекта DataTable
есть хороший визуализатор отладки, но что, если вы работаете с объектами, которые не являются объектами DataTables?
Пример ниже дает пример. Мы проверяем объект printer
.
Вывод консоли для printer
правильно расположен, как и ожидалось:
Но если вы проверяете объект в режиме отладки, выходные данные визуализатора не будут правильно выровнены. Похоже, что пробелы имеют меньшее горизонтальное расстояние, чем буквенные символы c.
Код:
using System;
using System.Diagnostics;
namespace visualiser
{
[DebuggerDisplay("{" + nameof(DebuggerDisplay) + ",nq}")]
public class Printer
{
private string[] columns = {"price", "quantity"};
private double[] values = {12.10, 2};
private string DebuggerDisplay => ToString();
public override string ToString() => StackedStrings();
private string Top()
{
const int padForPeriod = 1;
const int msDigits = 3;
var corner = string.Empty.PadRight(
19 + padForPeriod + msDigits, ' ') + "|" +
columns[0].PadLeft(15) + "|" +
columns[1].PadLeft(15) + "|";
return corner;
}
private string PrintRow()
{
var str = "2018-10-16 17:00:02.115|";
str = str + values[0].ToString().PadLeft(15) + "|" + values[1].ToString().PadLeft(15) + "|";
return str;
}
public string StackedStrings()
{
var str = string.Join(Environment.NewLine, PrintRow());
str = string.Join(Environment.NewLine, Top(), str);
return str;
}
}
class Program
{
static void Main(string[] args)
{
var printer = new Printer();
Console.WriteLine(printer);
Console.ReadKey();
}
}
}