使用反射动态遍历未知的复杂对象

时间:2019-10-15 10:57:30

标签: c# asp.net-core system.reflection

我需要使用反射遍历复杂的对象。唯一的事情是它可以是任何类型的对象。因此,属性名称事先未知。

最终目的是将整个内容记录到字符串中以进行记录。

我有以下代码。但是问题是,它还没有达到儿童水平

public static string GetLogFor(object target)
{
    var builder = new StringBuilder();

    foreach (var property in @target.GetType().GetProperties())
    {

        builder
            .Append(property.Name)
            .Append(" = ")
            .Append(property.GetValue(@target, null))
            .AppendLine();
    }

    return builder.ToString();
}

Ref

1 个答案:

答案 0 :(得分:1)

如果输出适合您的日志记录需求,则可以简单地使用Json序列化:

public static string GetLogFor(object target)
{
    return Newtonsoft.Json.JsonConvert.SerializeObject(target, Formatting.Indented);
}