Custom Configuration Handler

File configurasi baik itu app.config maupun web.config adalah file xml yang berisi configurasi external dari aplikasi yang kita buat. Seringkali kita melakukan pemanggilan nilai pada file configurasi seperti ini.

var baseUrl = ConfigurationManager.AppSettings["BaseUrl"].ToString();

Semakin kompleks aplikasi, terkadang membuat bertambahnya nilai yang perlu di store di configurasi. Supaya configurasi kita mudah di maintenance jika ada perubahan key pada configurasi dan menghindari kesalahan pengetikan pada key, kita bisa membuat class untuk menghandle issue tersebut.

public class BLLConfiguration : ConfigurationSection
{
public string BaseUrl { get; set; }
public static BLLConfiguration GetConfig()
{
var section = ConfigurationManager.GetSection("Astral/BusinessLogic");
if (section == null)
throw new ConfigurationErrorsException(
ErrorMessages.ConfigurationErrorsException);

return (BLLConfiguration)ConfigurationManager.GetSection("Astral/BusinessLogic");
}

public void LoadConfigValues(XmlNode node)
{
var attributeCollection = node.Attributes;
if (attributeCollection["BaseUrl"] != null)
BaseUrl = attributeCollection["BaseUrl"].Value;
}
}

public class BLLConfigurationHandler : IConfigurationSectionHandler
{
public Object Create(Object parent, Object configContext, XmlNode node)
{
var config = new BLLConfiguration();
config.LoadConfigValues(node);
return config;
}
}

Pada web config/appconfig daftarkan section tersebut. Pada type, formatnya adalah {Namespace.ClassName},{AssemblyName}

custom_config.png

Kemudian, assign value pada confurasi dibuat dalam satu section berdasarkan pada nama sectionGroup dan section-nya.

custom_config_1.png

Pemanggilan value dari configurasi jadinya seperti ini.

var baseUrl = BLL.BLLConfiguration.GetConfig().BaseUrl;

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Google

You are commenting using your Google account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s