2

我想要一个可以通过属性名称遍历对象并获取属性值的方法。

更具体地说,作为输入,我有一个像“Model.Child.Name”这样的字符串,我希望这个方法获取一个对象并让我获得可以通过以下方式以编程方式找到的值:object.Model.Child.Name。

我知道这样做的唯一方法是使用反射,但我不想自己编写这段代码,因为我相信存在陷阱。此外,我认为这或多或少是通常的任务。

在 C# 上是否有像这样的算法的知名实现?

4

2 回答 2

2

反思是要走的路。

在运行时访问属性的反射

您可以查看ObjectDumper并根据您的要求修改源代码。

ObjectDumper 获取一个 .NET 对象并将其转储到字符串、文件、textWriter 等。

于 2012-05-24T15:08:17.747 回答
1

写起来没那么难。是的,有一些陷阱,但很高兴知道这些陷阱。

该算法很简单,它遍历树结构。在每个节点上,您检查它的原始值(int、string、char 等),如果它不是这些时间之一,那么它是一个具有一个或多个原语并且需要遍历到它的原语的结构。

陷阱是处理空值、可空类型、值与引用类型等。每个开发人员都应该知道的直截了当的东西。

于 2012-05-24T17:16:40.850 回答