У меня есть много классов, которые украшены 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);
}
Атрибут 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()