11 Mart 2018 Pazar

App.config Dosyasından Okuma (Github Projesi)

     S.a. Arkadaşlar,
     Bugün C# ile app.config dosyasından okuma yapacağız. Daha sonra okuduğumuz verileri kullanacağımız bir projemiz var. Onu kısaca açıklayacağız. Bu projeyi github üzerinden yayımladık, daha sonra buraya eklemeler yapmayı düşünüyoruz. Şimdi başlayalım. 
      Projeyi kısaca açıklayıp onun üzerinden gidersek daha sağlıklı olacağına inanıyorum. Projemiz config dosyasından 2 farklı veri alıyor. Bunlar tatil günleri ve ülkelerin ceza puanı. Bu sayede verilen 2 tarih aralığında çalışanın alacağı ücret hesaplanacaktır, fakat Türkiye birim fiyatı ile İngiltere'nin farklı olabilir. Onun sonucunda çalışanın alacağı ücret hesaplanır. Koda buradan da erişebilirsiniz.

  <configSections>
    <section name="Holiday" type="System.Configuration.AppSettingsSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    <section name="Country" type="System.Configuration.AppSettingsSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
  </startup>
  <Holiday>
    <add key="Date1" value="2018-01-01" />
    <add key="Date2" value="2018-02-02" />
    <add key="Date3" value="2018-03-03" />
  </Holiday>

  <Country>
    <add key="TR" value="5" />
    <add key="EN" value="7" />
  </Country>

 Şimdi tarihleri aldığımız metodumuzu paylaşmak istiyorum. Tarihleri bir liste olarak alacağız, fakat ülkelerinden sadece birini alacağız. Yani tatil günleri çok olabilir doğal olarak (cumartesi , pazar dışındakiler) , fakat işçi bir ülkede çalışacağına göre , oradan sadece bir veri gelecek. O yüzden onların çekilmesi de farklı olacaktır. Şimdi 2 metodumuzu da art arda verelim.

private static List<DateTime> GetHoliday()
{
    NameValueCollection sAll = (NameValueCollection)ConfigurationManager.GetSection("Holiday");
    List<DateTime> holiday = new List<DateTime>();
    foreach (string s in sAll.AllKeys)
    {
          holiday.Add(Convert.ToDateTime(sAll.Get(s)));
    }
    return holiday;
}
//ülke bazlı cezanın okunması
private static int GetCountryAmount(string country)
{
    NameValueCollection sCountry = (NameValueCollection)ConfigurationManager.GetSection("Country");
    int penaltyAmount = 0;
    penaltyAmount = (Convert.ToInt32(sCountry.Get(country)));
    return penaltyAmount;
}

    1.metotta yukarıda belirttiğimiz gibi tüm tatil olan tarihleri alıp listeye atıyoruz. Sonra o listeyi kullanıyoruz. 2.metotta ise sadece bir ülke alıyoruz. Zaten fark etmişsinizdir , 1.metotta tüm verileri foreach ile alarak listeye eklerken, 2.metotta sadece o ülkeye ait olan veri çekilmektedir. Projenin tamam incelenmek istenirse buradan erişebilirsiniz. Hoşça kalın.

Hiç yorum yok:

Yorum Gönder