2012-07-20 51 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