Может ли атрибут DebuggerDisplay применяться к типам, которые не принадлежат?

Мне нравится атрибут DebuggerDisplay . Мне это очень нравится, я хочу использовать его для типов, для которых у меня нет исходного кода.

Это возможно?

Пример настройки DebuggerDisplay для иностранного типа (System.Collections.Generic.KeyValuePair ) добавить в AssemblyInfo.cs следующее:

 using System.Collections.Generic; using System.Diagnostics; [assembly: DebuggerDisplay("[Key={Key}, Value={Value}]", Target = typeof(KeyValuePair<,>))] 

(Протестировано в VS2015)

Да. На самом деле, Microsoft была настолько хороша, что сделала это встроенной опцией в Visual Studio.

Посмотрите на «Мои документы \ Visual Studio 20XX \ autoexp.cs» для некоторых примеров применения атрибута DebuggerDisplay к типам, которые являются чужими для вашей сборки. Затем добавьте часть своей, перекомпилируйте ее и замените autoexp.dll и перезапустите Visual Studio. Это должно просто работать.

Для справки см. Желтый абзац «Примечание» в этой статье MSDN


В качестве альтернативы: я являюсь создателем приобретаемого расширения для Visual Studio, что позволяет делать это с гораздо меньшей проблемой, даже не нужно останавливать сеанс отладки.

Атрибуты – это способ украсить что-то (типы, методы, поля и т. Д.) Во время компиляции, и они хранятся в двоичном представлении сборки. Один из способов добавить в него новый атрибут – перекомпилировать код с новым атрибутом. Если у вас нет кода, в некоторых случаях вы можете получить код, декомпилировав сборку.

Другой способ, которым я могу думать, может состоять в том, чтобы использовать Reflection для загрузки и обработки всех типов в сборке, а затем сгенерировать (через reflection) еще одну сборку с добавлением DebuggerDisplay к типам, которые вы хотите (вот пример )

  • Шаг в свойство / функцию (F11) не работает должным образом
  • Получение состояния переменных после ошибки в R
  • Как использовать условную точку останова в Eclipse?
  • Печать коллекций Java Nicely (toString не возвращает довольно вывод)
  • gprolog: получение stacktrace после исключения
  • Как включить ошибки привязки в исключения во время выполнения?
  • Где узнать о VS отладчике «волшебные имена»
  • Не удается войти в исходный код платформы .NET
  • Запуск приложения в GDB до тех пор, пока не произойдет исключение
  • #if DEBUG против условного ("DEBUG")
  • Отладка Logcat Eclipse
  • Interesting Posts

    Должна ли таблица базы данных иметь первичные ключи?

    Как разбить многострочную строку на несколько строк?

    почему `std :: initializer_list` часто передается по значению?

    Rsync –remove-source-файлы удаляет исходные файлы по одному или после завершения rsync?

    Строки, записанные в файл, не сохраняют разрывы строк

    Как рисовать маршрут в Google Maps API V2 из моего местоположения

    Является ли VGA-порт «горячим» подключением?

    Разница в поведении при использовании dynamic_cast со ссылкой и указателями

    Редактирование / etc / hosts для использования имени домена вместо ip-адреса

    Где метод Rails, который преобразует данные из `datetime_select` в объект DateTime?

    Как заставить приложение WPF работать в режиме администратора

    ASSETWriterInput для создания видео от UIImages по проблемам Iphone

    Как узнать аргументы командной строки для запущенной программы?

    Изменение языка в Windows 8

    Сетка изображений внутри ScrollView

    Давайте будем гением компьютера.