2012-07-20 77 views
0

我在想从ActionExecutingContext实例中我应该包含哪些字段,我认为有一个帮助程序是不是很好,它会产生可读的实例数据文本表示?日志记录实例数据

我知道,在所有情况下我都不是完美的 - 我的意思是它可能会太深,它可能不会输出所有默认情况下需要的东西,但是在许多情况下,数据。

有没有人写过这样的东西,在任何开源项目中见过?

回答

1

您可以使用反射很容易地得到一个对象的所有属性的值:

public static void LogPublicProperties(object obj) 
{ 
    foreach (var propertyInfo in d.GetType().GetProperties()) 
     Console.WriteLine("{0} = {1}", 
      propertyInfo.Name, 
      propertyInfo.GetValue(d, null)); 
} 

如果你想记录的字段,然后用Type.GetFields()代替GetProperties()

+0

它只会从第一级属性获取值,例如在ActionExecutingContext用户代理里面很深:filterContext.RequestContext.HttpContext.Request.UserAgent – Giedrius 2012-07-20 11:31:14

+0

好吧,我看到你的问题了。 – M4N 2012-07-20 11:32:05

+0

所以这样递归地做,这只是一个如何检测复杂属性的问题。 – 2012-07-20 11:35:12