Атрибут, который отображает значение свойства в Visual Studio - PullRequest
5 голосов
/ 23 февраля 2011

Мне кажется, я где-то видел атрибут, который при применении к классу будет показывать значение свойства в intellisense. Я не говорю о комментариях XML. Выглядело это примерно так:

[SomeAttribute("Name = '{0}', Age = '{1}'", Name, Age)]
MyClass

Кто-нибудь знает, о каком атрибуте я говорю?

Ответы [ 2 ]

4 голосов
/ 23 февраля 2011

Не имеет смысла «показывать значение в IntelliSense», но, думаю, вы имеете в виду в отладчике . В этом случае вы ищете атрибут DebuggerDisplayAttribute:

[DebuggerDisplay("Name = '{Name}', Age = '{Age}'")]
public class XYZ
{
    public string Name;
    public int Age;
}

Конечно, вы также можете переопределить метод ToString(). В отсутствие DebuggerDisplayAttribute отладчик использует ToString(). Вы должны использовать DebuggerDisplayAttribute, только если вам действительно нужно, чтобы реализация ToString() была другой (и недостаточной для отладки).

2 голосов
/ 23 февраля 2011

Вы уверены, что не думаете о DebuggerDisplayAttribute, используемом при отладке?Он имеет формат, аналогичный показанному вами, но используется для присвоения «значения» классу для отладки, который отображается в окне отладки и при наведении указателя мыши на экземпляр.

Форматотличается от формата строки, как у вас, но использует специальный синтаксис:

[DebuggerDisplay("Name = '{Name}', Age = '{Age}'")]
MyClass

При отладке будут показаны значения свойств Name и Age экземпляра MyClass в строке вместо типа MyClass.

...