【问题标题】:Get value of property in nested object using only a string to navigate the object仅使用字符串导航对象获取嵌套对象中的属性值
【发布时间】:2019-11-16 02:08:31
【问题描述】:

假设我有 Object1,它有一个 Object2 的列表,它有 Object3,它有 Property1,我想要它的值。是否可以在我的数据库中有一个字符串,例如“Object1.Object2[0].Object3.Property1”,然后以某种方式在代码中使用它来导航该对象并获取我想要的属性的值?我正在获取我想从另一个 api 导航到的对象,我基本上想查看我的数据库并查看 property1 必须> 10,然后动态地能够导航该对象,以便我可以查看我的对象中的值是否通过我的标准在我的数据库中。我希望能够为此使用数据库值,这样我们就可以在不更新代码的情况下将字段添加到数据库中。这可能吗?

【问题讨论】:

  • 是的,这是可能的,但您必须自己编写代码才能完成。您必须将字符串解析为一系列访问,然后针对对象执行这些访问。如何执行此操作取决于对象的类型。
  • @cdhowie 是正确的。对于单个属性访问,使用反射的指南应该很有用。 stackoverflow.com/questions/1196991/…

标签: c#


【解决方案1】:

是的,这绝对是可能的。您会希望 Object1 成为动态对象,以便您可以使用变量访问其属性,例如Object1["Object2"][0]。然后你需要为你的数据库字符串制定一个一致的格式,在你的例子中你可以用.分割并使用循环来访问和存储结果中的每个属性。

请参阅this 问题以获取有关来自 JSON 的动态对象的信息(假设这是您从 API 接收到的格式),或者如果您更喜欢使用反射,this 问题有相关信息。

【讨论】:

    【解决方案2】:

    我找到了一个 nuget 包来做我想要的。 https://github.com/Domysee/Pather.CSharp

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-31
      • 2013-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-11
      • 2016-03-19
      相关资源
      最近更新 更多