1

如果我在 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;}
    ....
}

但是,理想情况下,这适用于任何类型。

在此先感谢您的帮助 :)

4

1 回答 1

2

使用ObjectDumper很容易做到这一点。

它是由 Microsoft 编写的开源工具,似乎完全符合您的要求:编写对象属性的文本/可读表示。这是一个简单的类,如果您想调整输出格式,很容易修改。

最简单的使用示例:

ObjectDumper.Write(purchaseOrder)

检查此页面以获取使用示例。

于 2012-10-12T18:08:16.477 回答