2014-03-03 71 views
1

我有一本字典,它包含一個int和一個Resource類型的對象。 Resource對象包含一個名爲CreateNode()的方法。如果我寫一個foreach循環是這樣的:調用駐留在字典中的對象的方法?

foreach (var resourcePair in ResourceDictionary) 
{ 
    // call CreateNode() on each Resource object in dictionary pair 
} 

我如何可以調用CreateNode()方法字典中的每個資源對象?我試過以下,但編輯不喜歡它(說「無法解析符號」)。這是正確的,因爲它看起來我試圖在該對上調用CreateNode方法,而不是在該對的一部分上的對象上調用CreateNode()方法。

foreach (var resourcePair in ResourceDictionary) 
{ 
    resourcePair.CreateNode(ref xElement); 
} 

我只是無法弄清楚如何做到這一點。有人可以向正確的方向提供指針嗎?

+0

什麼是ResourceDirtionary的類型? – Paddy

+0

@Paddy ResourceDictionary是一個包含「int」(作爲鍵)和「Resource」類型的對象的字典,它是值。 – Kevin

回答

4

你需要做到以下幾點:

foreach (var resourcePair in ResourceDictionary.Values) 
{ 
    resourcePair.CreateNode(ref xElement); 
} 

您需要指定要訪問值(這是你的資源對象的集合),否則你只是訪問,這並不有CreateNode一個KeyValuePair方法。

+1

這個伎倆!定時器啓動後,我會立即給出答案。非常感謝!我當然感謝你的幫助。 – Kevin

+0

你應該重新命名'resourcePair'中的變量爲更有意義的變量,因爲它不再是鍵值對... –

+0

沒問題,前幾天我遇到了同樣的問題,它讓我撓頭10分鐘之前,我有我的尤里卡/時刻。 – BenM

2

resourcePairKeyValuePair<Tkey,TValue>你的情況KeyValuePair<int,Resource>

,所以你需要按順序訪問Value物業打電話給你的方法:

foreach (var resourcePair in ResourceDictionary) 
{ 
    resourcePair.Value.CreateNode(ref xElement); 
}