如果我在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
我想通过对象的结构(不关心内部的实际数据,但只关注属性的名称和类型)。另外,如果它不是基类型,则继续向下递归树(即对象或列表)。
注意:只有公开成员......
我出于某种原因无法想象这一点。
以下是上面打印的树的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;}
....
}
但是,理想情况下,这适用于任何类型。
提前感谢您的帮助:)
答案 0 :(得分:1)
使用ObjectDumper进行此操作非常容易。
这是一个由Microsoft编写的开源工具,它似乎完全符合您的要求:编写对象属性的文本/可读表示。如果你想调整outpout格式,这是一个很容易修改的简单类。
最简单的用法示例:
ObjectDumper.Write(purchaseOrder)
检查this page是否有使用样本。