Делает там существует метод для рендеринга использования объекта DebuggerDisplayAttribute

У меня есть много классов, которые украшены DebuggerDisplayAttribute.

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

Там существует метод в Платформе.NET, которая отобразит объект, отформатированный с помощью DebuggerDisplayAttribute (или отступит к использованию.ToString (), если никакой DebuggerDisplayAttribute не будет определен)?

Править

Для разъяснения я надеялся, что могло бы быть что-то встроенное в Платформу. Я знаю, что могу получить свойство Value от DebuggerDisplayAttribute, но я затем должен отформатировать свой экземпляр с помощью строки формата, представленной DebuggerDisplayAttribute. Значение.

Если бы я прокручиваю свое собственное, я предусмотрел бы дополнительный метод вдоль следующих строк:

public string FormatDebugDisplay(this object value)
{
    DebugDisplayAttribute attribute = ... get the attribute for value ...
    if (attribute = null) return value.ToString();

    string formatString = attribute.Value;

    ??? How do I format value using formatString ???
    return SomeFormatMethod(formatString, value);
}
6
задан Joe 8 May 2010 в 13:59
поделиться

1 ответ

Атрибут DebuggerDisplayAttribute имеет свойство Value, которое возвращает то, что вы хотите.

Так что вы, вероятно, могли бы использовать что-то вроде этого:

var attribute = obj.GetType().
    GetCustomAttributes(typeof(DebuggerDisplayAttribute), false);
return (attribute == null) ? obj.ToString() : attribute.Value;

Вы могли бы даже поместить это в метод расширения:

public static string ToDebugString(this object obj)
{
    var attribute = obj.GetType().
        GetCustomAttributes(typeof(DebuggerDisplayAttribute), false);
    return (attribute == null) ? obj.ToString() : attribute.Value;
}

вы можете вызывать его на каждом объекте: myObject.ToDebugString()

1
ответ дан 17 December 2019 в 07:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: