2015-07-13 83 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它總是很樂意提供幫助 –