C# ‘ta App.Config Kullanımı

Benim gibi açık kaynakçı bir adamın gün gelip C# kullanacağına kim inanırdı ama gün geldi bir süreliğine kendisiyle haşır neşir olmam gerekiyor. İlerleyen günlerde sebeplerini de açıklarım ama şimdilik tecrübelerimi paylaşayım. Eskiden exe uygulamarının yanında bazen .ini dosyaları olurdur, C# ile Microsoft onları kullanmaktan vazgeçti. Hazırlamam gereken uygulamada da dışarıdan parametre okumam gerekiyor, hoş ini dosyasıda nasıl kullanılır C# ile bilmediğim için benim için çok birşey fark etmedi ama yine de araştırırken net ve kolay bir kaynak bulamadım. Halbuki benim istediğim sadece 3 tane string okumaktı.

Sadede gelirsek

<configuration>

<appSettings>
<add key="Plant" value="Fab1" />
<add key="Line" value="B1" />
<add key="Section" value="T1" />
</appSettings>

</configuration>

şeklinde hazırlanmış bir app.config dosyasından data çekmek için

using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;

namespace _ak_res
{
class ReadConf
{
public String getPlant(){
return ConfigurationSettings.AppSettings["Plant"].ToString();
}

public String getLine()
{
return ConfigurationSettings.AppSettings["Line"].ToString();
}

public String getSection()
{
return ConfigurationSettings.AppSettings["Section"].ToString();
}
}
}

şeklinde yazacağınız bir class işinizi görecektir. İşinizi göreceğini umuyorum, anlamadığınız yerler olursa, yorum kısmından sorabilirsiniz.

“C# ‘ta App.Config Kullanımı” üzerine bir düşünce

  1. Class da tam C++ tadinda 🙂 C# yazmadigin ya da .net uzerinde calismayip acik kaynakla ugrastigin cok belli 🙂 Bu arada configuration librarysinde sadece AppSettings kullanacaksan, ilgili yerlere soyle yazman performans acisindan daha iyi olur (basit programlarda gozle gorulmez fark tabii): System.Configuration.ConfigurationSettings.AppSettings[“blabla”].ToString().Trim(); yazip libraryi silebilirsin. En tepeye yazinca libraryinin icindeki her seyi yukler. Ayrica bu tarz get-set olaylari icin C#’ta:

    public String GetPlant {
    set
    {
    _privateVariableVarsa=value; //burada value direkt value, ilgili value’u oraya yaz anlaminda degil
    }
    get
    {
    return System.Configuration.ConfigurationSettings.AppSettings[“Plant”].ToString();
    }
    }

    yaziyoruz…

    Iyi de neden boyle yaziyoruz, digeri de calisiyor? Boyle yazmak methodlar ile ayristirilmasini saglar (kolay okunmasi ve UML’de daha iyi anlasilmasi bakimindan). Ancak methodta overload varsa, o zaman bu sekilde yazmanin sorunu yok (sorun zaten yok da, okunabilirlik acisindan diyorum):

    public void Tirilaylay()
    {
    _name = “bilinmeyen deli”;
    }

    public void Tirilaylay(string name)
    {
    _name = name;
    }

    Kolay gelsin 😉

Bir Cevap Yazın