调用驻留在字典中的对象的方法?

时间:2014-03-03 14:34:09

标签: c#

我有一个包含int的字典和一个Resource类型的对象。 Resource对象包含一个名为CreateNode()的方法。如果我像这样写一个foreach循环:

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

如何在字典中的每个Resource对象上调用CreateNode()方法?我尝试过以下内容,但编辑不喜欢它(说“无法解析符号”)。这是正确的,因为它似乎我试图在对上调用CreateNode方法而不是对象中的CreateNode()方法。

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

我无法弄清楚如何做到这一点。有人可以向正确的方向提供指针吗?

2 个答案:

答案 0 :(得分:4)

您需要执行以下操作:

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

您需要指定要访问的值(这是您的资源对象集合),否则您只是访问没有CreateNode方法的KeyValuePair。

答案 1 :(得分:2)

resourcePair是您KeyValuePair<Tkey,TValue>

中的KeyValuePair<int,Resource>

因此您需要访问Value属性才能调用您的方法:

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