2016-04-19 21 views
0

die Wörterbuch „_infoCardFactories“, wie so definiert:ein Schlüssel im Wörterbuch Fehler nicht vorhanden war

Dictionary<string, IInfoCardFactory> _infoCardFactories; 

der Fehler „der angegebene Schlüssel nicht im Wörterbuch war“ stammt aus dieser Codezeile:

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

Hier ist die Schnittstelle für das Wörterbuch sowie die Klasse, in der es implementiert ist.

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; 
     } 

} 

ich kann nicht den gesamten Code zeigen, aufgrund der Tatsache, das ist ein assigment jedoch würde ich dankbar, wenn mir jemand helfen könnte.

+3

ziemlich einfach Fehler, sind Sie mit '_infoCardFactories [Kategorie] einen' string' Schlüssel Senden ', aber was auch immer' Category' ist nicht existieren als Schlüssel im Wörterbuch. – Jonesopolis

+1

Es gibt keine Info-Karten-Factory mit der angegebenen 'Kategorie' in Ihrem Wörterbuch. Warum das der Fall ist und ob das der gewünschte Zustand ist, übersteigt unsere Fähigkeit zu antworten :) – Luaan

Antwort

0

Sie müssen eine Klasse basierend auf dieser Schnittstelle implementieren und dann Ihr Wörterbuch für die Verwendung dieser Implementierung definieren. Es muss eine Instanz geben.

0

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

verwenden:

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