如果我在 C# 中有一个预定义对象,如何使用反射循环遍历该对象的结构进行打印,使其看起来如下所示:
Class PurchaseOrder
------------------
Property: ID | Type: Int32
Property: Client | Type: Some.Namespace.Client
+---- Property: FirstName | Type: String
+---- Property: LastName | Type: String
+---- Property: Address | Type: Some.Namespace.Address
+---- +---- Property: Line1 | Type: String
Property: Date | Type: DateTime
我想递归遍历对象的结构(不关心里面的实际数据,而只关心属性的名称和类型)。此外,如果它不是基本类型,请继续沿树向下递归(即对象或列表)。
注意:仅限公共(public)成员...
出于某种原因,我似乎无法想象这一点。
上面打印的树的 C# 类如下所示:
class PurchaseOrder {
public Int32 Id {get;set;}
public Client Client {get;set;}
public DateTime Date {get;set;}
}
class Client {
public string FirstName {get;set;}
public string LastName {get;set;}
public Address Address {get;set}
}
class Address {
public string Line1 {get;set;}
....
}
但是,理想情况下这适用于任何类型。
预先感谢您的帮助:)
最佳答案
使用 ObjectDumper 可以很容易地做到这一点.
这是一个由 Microsoft 编写的开源工具,它似乎完全可以满足您的需求:编写对象属性的文本/可读表示。这是一个简单的类,如果您想调整输出格式,很容易修改。
最简单的使用示例:
ObjectDumper.Write(purchaseOrder)
检查this page获取使用示例。
关于c# - 使用反射通过对象递归并打印树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12864628/