【问题标题】:Accessing object[] with different Type objects使用不同的 Type 对象访问 object[]
【发布时间】:2015-07-13 13:17:50
【问题描述】:

我正在调用第三方服务,并且在响应中他们返回了一个名为 Items 的对象[]。该对象数组在其数组中包含几个不同类型的不同对象。

这是Items 在 CS 文件中的样子:

[System.Xml.Serialization.XmlElementAttribute("REPORT", typeof(REPORT))]
[System.Xml.Serialization.XmlElementAttribute("_PRODUCT", typeof(_PRODUCT))]
[System.Xml.Serialization.XmlElementAttribute("_PROPERTY_INFORMATION", typeof(_PROPERTY_INFORMATION))]
public object[] Items
{
    get
    {
        return this.itemsField;
    }
    set
    {
        this.itemsField = value;
    }
}

我需要访问 Items 数组中的 _PROPERTY_INFORMATION 对象。但是,我不确定完成此类任务的最佳方法是什么。

这是我目前拥有的:

var items = RESPONSE.RESPONSE_DATA[0].PROPERTY_INFORMATION_RESPONSE.Items;
foreach (_PROPERTY_INFORMATION info in items)
{
    parsedStreetAddress = info.PROPERTY._PARSED_STREET_ADDRESS;
}

有没有更好的方法用更少的代码来完成同样的事情?我只是获取 Items 数组中的每个 _PROPERTY_INFORMATION

【问题讨论】:

  • 您是否只希望在items 中有一个PROPERTY_INFORMATION 实例?还是只想要最后一个?
  • 检查每个项目的类型 - 如果它是您要查找的类型,则强制转换并访问该属性。

标签: c# arrays object visual-studio-2013


【解决方案1】:

如何使用 LINQ

_PROPERTY_INFORMATION result = RESPONSE.RESPONSE_DATA[0].PROPERTY_INFORMATION_RESPONSE.Items
    .First(x => x is _PROPERTY_INFORMATION);

【讨论】:

  • 这对我有用!正是我想要的。我没有考虑为此使用 LINQ。非常感谢您的回答。
  • @Turp 总是很乐意提供帮助
猜你喜欢
  • 2017-11-28
  • 2018-07-07
  • 1970-01-01
  • 1970-01-01
  • 2018-01-13
  • 2019-09-25
  • 2018-04-10
  • 1970-01-01
相关资源
最近更新 更多