[C#] C#:打印對象的所有屬性


Answers

您可以使用TypeDescriptor類來執行此操作:

foreach(PropertyDescriptor descriptor in TypeDescriptor.GetProperties(obj))
{
    string name=descriptor.Name;
    object value=descriptor.GetValue(obj);
    Console.WriteLine("{0}={1}",name,value);
}

TypeDescriptor位於System.ComponentModel命名空間中,是Visual Studio用來在其屬性瀏覽器中顯示對象的API。 它最終基於反射(就像任何解決方案一樣),但它提供了反射API的相當好的抽象級別。

Question

這個問題在這裡已經有了答案:

有沒有內置.NET的方法可以將所有屬性和對象的類型寫入控制台? 可以使用反射當然,但我很好奇,如果這已經存在...特別是因為你可以在立即窗口在Visual Studio中。 在那裡你可以使用一個對象名(在調試模式下),按回車鍵,它會打印出所有的東西。

像這樣的方法存在嗎?







以下代碼將執行所需的功能:

Type t = obj.GetType();//where obj is object whose properties you need.
PropertyInfo [] pi =t.GetProperties();
foreach (PropertyInfo p in pi)
{
    System.Console.WriteLine(p.Name + "    " + p.GetType);
}

我想如果你把它寫成擴展方法,你可以在所有類型的對像上使用它。




任何其他解決方案/庫最終將使用反射來反省類型...