2015-07-13 82 views
2

我正在调用第三方服务,并在响应中返回了一个名为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; 
    } 
} 

我需要访问项目阵列内的_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

+0

你只能期待在那里是'items'一个'PROPERTY_INFORMATION'实例?或者你只想要最后一个? – Lee

+0

检查每个项目的类型 - 如果它是您正在寻找的类型,则投射并访问该属性。 –

回答

1

如何使用LINQ

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

这对我有用!正是我想要的。我没有考虑使用LINQ。我非常感谢你的回答。 – Turp

+0

@Turp它总是很乐意提供帮助 –