c# - 将整个对象转储到 C# 中的日志的最佳方法是什么?

标签 c# visual-studio debugging object logging

因此,对于在运行时查看当前对象的状态,我真的很喜欢 Visual Studio 即时窗口给我的功能。做一个简单的

? objectname

会给我一个格式良好的对象“转储”。

有没有一种简单的方法可以在代码中执行此操作,以便我可以在记录日志时执行类似的操作?

最佳答案

对于更大的对象图,我支持使用 Json,但策略略有不同。首先,我有一个易于调用的静态类和一个包装 Json 转换的静态方法(注意:可以使它成为一个扩展方法)。

using Newtonsoft.Json;

public static class F
{
    public static string Dump(object obj)
    {
        return JsonConvert.SerializeObject(obj);
    }
}

然后在您的立即窗口中,

var lookHere = F.Dump(myobj);

lookHere 将自动显示在前缀为 $ 的 Locals 窗口中,或者您可以向其中添加监视。在检查器中 Value 列的右侧,有一个放大镜,旁边有一个下拉插入符号。选择下拉插入符号并选择 Json 可视化工具。

Screenshot of Visual Studio 2013 Locals window

我正在使用 Visual Studio 2013。

关于c# - 将整个对象转储到 C# 中的日志的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/360277/

相关文章:

C# List 加入列表并从另一个列表中过滤

c# - CoInitializeSecurity 在 Visual Studio 2017 中抛出 RPC_E_TOO_LATE

c# - 如何卸载特定版本的 NuGet 包?

ios - 我不断收到使用未解析的标识符错误

visual-studio - pdb 尝试调试单元测试时出现 UnauthorizedAccessException

c# - 垂直六角网格 : Get x rings of tiles surrounding a specific coordinate

c# - 检测浏览器中是否弹出打开文件对话框

c++ - 有没有更好的方法将命令行参数传递给我的 VC++ 程序?

c# - 找不到错误 MSB4226 MSBuild.Community.Tasks.Targets

debugging - 如何在没有 Internet 访问权限的服务器中安装 Windows Web 服务 API (WWSAPI)