gpt4 book ai didi

.net - 是否存在使用 DebuggerDisplayAttribute 呈现对象的方法

转载 作者:行者123 更新时间:2023-12-04 15:27:47 25 4
gpt4 key购买 nike

我有许多用 DebuggerDisplayAttribute 修饰的类。

我希望能够将跟踪语句添加到将显示这些类的实例的单元测试中。

.NET Framework 中是否存在一种方法可以显示使用 DebuggerDisplayAttribute 格式化的对象(如果未定义 DebuggerDisplayAttribute,则回退到使用 .ToString())?

编辑

澄清一下,我希望框架中可能内置一些东西。我知道我可以从 DebuggerDisplayAttribute 获取 Value 属性,但是我需要使用由 DebuggerDisplayAttribute.Value 表示的格式字符串来格式化我的实例。

如果我自己动手,我会设想一种扩展方法,如下所示:

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 的格式字符串是由调试器计算的,就像它计算您在 Watch 窗口或 Immediate 窗口中键入的表达式一样。这就是为什么您可以在大括号内放置任意表达式的原因,例如 {FirstName + " " + LastName} .

因此,要在您的代码中评估这些,您需要将 Visual Studio 调试器嵌入到您的应用程序中。可能不会发生。 (咧嘴笑)

最好的办法可能是采用当前在 DebuggerDisplay 格式字符串中的所有格式逻辑,并将其设为方法。然后您可以自由地从您的代码中调用该方法。您的 DebuggerDisplay 属性最终除了调用该方法之外什么都不做。

[DebuggerDisplay("{Inspect()}")]
public class MyClass {
public string Inspect() { ... }
}

关于.net - 是否存在使用 DebuggerDisplayAttribute 呈现对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2793965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com