Re[3]: А почему бы нам не сделать что-нибудь полезное?
От: _NN_  
Дата: 30.03.25 05:55
Оценка: :)
Здравствуйте, Codealot, Вы писали:

C>Здравствуйте, VladD2, Вы писали:


VD>>Попросил ДипСика:

VD>>

VD>>Напиши плагин к VS 2022 реализующий отображение в коде чисел с разделителями тысяч.


C>Этот незамутненный ни малейшим пониманием оптимизм...

C>Ты в курсе, что такое Watch в отладчике и зачем оно используется? И какое отношение к нему имеет отображение в коде, по твоему? Если допустить что оно вообще будет работать, в чем я сильно сомневаюсь.

Под рукой нет студии, но ChatGPT предлагает готовый код.
Попробуйте:

using Microsoft.VisualStudio.DebuggerVisualizers;
using System;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Windows.Forms;

[assembly: DebuggerVisualizer(
    typeof(WatchNumberVisualizer),
    typeof(VisualizerObjectSource),
    Target = typeof(int),
    Description = "Formatted Number Visualizer")]

[assembly: DebuggerVisualizer(
    typeof(WatchNumberVisualizer),
    typeof(VisualizerObjectSource),
    Target = typeof(long),
    Description = "Formatted Number Visualizer")]

[assembly: DebuggerVisualizer(
    typeof(WatchNumberVisualizer),
    typeof(VisualizerObjectSource),
    Target = typeof(double),
    Description = "Formatted Number Visualizer")]

public class WatchNumberVisualizer : DialogDebuggerVisualizer
{
    protected override void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider)
    {
        object data = objectProvider.GetObject();
        string formattedValue = FormatWithSpaces(data);

        MessageBox.Show($"Formatted Value:\n{formattedValue}", "Formatted Number Visualizer");
    }

    private string FormatWithSpaces(object number)
    {
        if (number is int i)
            return i.ToString("N0", CultureInfo.InvariantCulture).Replace(',', ' ');
        if (number is long l)
            return l.ToString("N0", CultureInfo.InvariantCulture).Replace(',', ' ');
        if (number is double d)
            return d.ToString("N2", CultureInfo.InvariantCulture).Replace(',', ' ');

        return number.ToString();
    }
}
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.