【问题标题】:the given key was not present in the dictionary error字典错误中不存在给定的键
【发布时间】:2016-04-19 23:55:35
【问题描述】:

字典“_infoCardFactories”是这样定义的:

 Dictionary<string, IInfoCardFactory> _infoCardFactories;

错误“给定的键不在字典中”源于这行代码:

IInfoCard card = _infoCardFactories[category].CreateNewInfoCard(category); 

这里是字典的接口以及实现它的类。

public interface IInfoCardFactory
    {
        IInfoCard CreateNewInfoCard(string category);
        IInfoCard CreateInfoCard(string initialDetails);
        string[] CategoriesSupported { get; }
        string GetDescription(string category);
    }

public class creditcard : IInfoCardFactory,IInfoCard
    { 
        public IInfoCard CreateNewInfoCard(string category)
        {
           creditcard card = new creditcard();
           return card;
        }

} 

我无法显示所有代码,因为这是一个任务,但是如果有人可以帮助我,我会很感激。

【问题讨论】:

  • 非常简单的错误,您发送的是带有_infoCardFactories[category]string 键,但无论category 是什么,在字典中都不作为键存在。
  • 您的字典中没有给定category 的信息卡工厂。为什么会这样,以及这是否是我们想要的状态超出了我们的回答能力:)

标签: c#


【解决方案1】:

您需要基于此接口实现一个类,然后定义您的字典以使用该实现。需要有一个实例。

【讨论】:

    【解决方案2】:

    而不是IInfoCard card = _infoCardFactories[category].CreateNewInfoCard(category);

    使用这个:

    IInfoCard card;
    IInfoCardFactory factory;
    if (_infoCardFactories.TryGetValue(category, out factory))
         card = factory.CreateNewInfoCard(category);
    else
    {
        // when category is not in your dictionary
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      • 2016-08-14
      相关资源
      最近更新 更多