2014-08-27 74 views
-5

我得到了一个列表,即时尝试改变字典(它是必须的,所以我不能使用列表)的代码。我的问题是,在'BankRates.cs'中,我无法将对象添加到我的字典中。我知道添加也应该得到一个字符串,以便程序正常工作,但我只是无法弄清楚什么是我应该在'添加'方法中插入的关键。无法初始化字典在c#

我有这个4 CS文件:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace Converter 
{ 
    class Currency 
    { 
     //members 

     //getters and setters 
     public string Code { get; set; } 
     public string Name { get; set; } 
     public double Rate { get; set; } 
     public double Unit { get; set; } 
     public string Country { get; set; } 

     //constractor 
     public Currency(string code, string name, double rate, double unit, string country) 
     { 
      this.Code = code; 
      this.Name = name; 
      this.Rate = rate; 
      this.Unit = unit; 
      this.Country = country; 
     } 

     //override ToString method for visualization  
     public override string ToString() 
     { 
      return (Name + "-" +Code); 
     } 
    } 
} 

currencyDictionary:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace Converter 
{ 
    class CurrencyDic 
    { 
     //setter and getter 
     public Dictionary<string,Currency> currencyDic { get; set; } 
     //constractor 
     public CurrencyDic() 
     { 
      currencyDic = new Dictionary<string,Currency>(); 
     } 
     public CurrencyDic(Dictionary<string,Currency> cur) 
     { 
      currencyDic = new Dictionary<string,Currency>(cur); 
     } 
     // implements foreach 
     public IEnumerator<Currency> GetEnumerator() 
     { 
      foreach (Currency cur in currencyDic.Values) { yield return cur;} 
     } 
    } 
} 


using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace Converter 
{ 
    interface IBankRates 
    { 
     void GetRates(); 
     double Convert(Currency from, Currency to, double amount); 
    } 
} 

,最后一个:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Windows; 
using System.IO; 
using System.Threading.Tasks; 
using System.Xml; 
using System.Xml.Linq; 
using System.Runtime.Remoting.Messaging; 



namespace Converter 
{ 
    class BankRates:IBankRates 
    { 
     private string Bank_URL = "http://www.boi.org.il/currency.xml"; 
     CurrencyDic currencyDic = new CurrencyDic(); 
     public void GetRates() 
     { 
      XDocument xdoc = new XDocument(); 
      try 
      { 
       xdoc = XDocument.Load(Bank_URL);} 
       catch (XmlException) 
      { 
       MessageBox.Show("Failed to load Xml file"); 
       System.Environment.Exit(1); 

      } 
       //load the xml 
       var allCurencies = from currency in xdoc.Descendants("CURRENCY")  //linq query 
            select new 
            { 
             Name = currency.Descendants("NAME").First().Value, 
             Unit = currency.Descendants("UNIT").First().Value, 
             Code = currency.Descendants("CURRENCYCODE").First().Value, 
             Cuntry = currency.Descendants("COUNTRY").First().Value, 
             Rate = currency.Descendants("RATE").First().Value 
            }; 


       foreach (var currency in allCurencies)         //create the currency list 
       { 
        currencyDic.Add(****What Goes Here?****,new Currency(currency.Code, currency.Name, double.Parse(currency.Rate), double.Parse(currency.Unit), currency.Cuntry)); 
        // Console.WriteLine(currency.Code + currency.Cuntry + currency.Name, currency.Rate + currency.Unit); 
       } 


     } 
     //returns the list 
     public CurrencyDic getDic() 
     { 
      return currencyDic; 
     } 

     //makes the converting calculation 
     public double Convert(Currency from,Currency to, double amount) 
     { 
      double inRate, outRate, excangeRate; 
      inRate = from.Rate/from.Unit; 
      outRate = to.Rate/to.Unit; 
      excangeRate = inRate/outRate; 
      return (amount * excangeRate); 
     } 
    } 
} 
+0

TL; DR;将代码压缩到相关部分 – thumbmunkeys 2014-08-27 11:11:21

+0

不要发布整个项目。仅发布相关代码。 – 2014-08-27 11:12:33

+0

另外:你的类'CurrencyDic'甚至没有'Add'方法 – derape 2014-08-27 11:12:40

回答

0

看来你有currencyDic另一个字典。

this.currencyDic.currencyDic.Add(“string”,“some object Currency”);

+0

currencyDic本身是一个字典() – tanuk 2014-08-27 11:19:32

+0

他得到了一个类'CurrencyDic',他创建的只是从对象继承而来,并且该类包含一个字段'currencyDic'这是一个'Dictionary '。 – 2014-08-27 11:26:36