個人的に最近はASP.NETを使った開発を多くやっているのですが、そこでC#プログラム内の定数を外部から変更したいという要望がありました。
基本的にプログラム内の定数はビルドを行わない限り変更することはできませんが、プロジェクト内のweb.configというファイルに値を設定することにより、いちいちビルドをしなくても値を変更できるということで、その設定をやってみたのでご紹介したいと思います。
■web.configに値を記載する
まずweb.configに設定したい値を下記のようにappSettingsセクションを追記します。keyに変数名、valueに値というように記述します
<appSettings> <add key="name" value="apple" /> <add key="count" value="3" /> </appSettings>設定は上記の記載だけで完了です。形式もkey=valueの記載なのでわかりやすく簡単ですね。
■プログラム内でweb.configの設定値を呼び出す
ConfigurationManagerクラスを使う必要があるので、まずusing設定を行います。using System.Configuration;
※上記追記だけで読込ができない場合があるので、その場合は下記のようにプロジェクトの参照から追加してみてください。
【参照追加方法】
- ①「ソリューションエクスプローラー」→「参照」右クリック→「参照の追加」
- ②アセンブリ:フレームワーク内にある「System.Configuration」にチェックを入れて「OK」
ここまで整ったら後は設定を呼ぶだけです。
string fruitsName = ConfigurationManager.AppSettings["name"]; int count = int.Parse(ConfigurationManager.AppSettings["count"]);ちなみにweb.configの設定値は常にstringなので、数値を使いたい場合は上記のようにint型にParseする必要があります。
上記のようにとても簡単に設定できました。
例えば下記のようにDBの接続先情報等を設定しておいて、接続先情報だけ変更したい場合にはいちいちビルドする必要がないので楽だと思います。
<appSettings> <add key="connectionDB" value="Data Source=XX.XX.XX.XX; Initial Catalog=testdb; User Id=userid; Password=password; "/> </appSettings>
※web.config内の値を変更しても、すぐにプログラム内に適用される訳では無いのでご注意ください。
IIS的には、接続が無くなった時点で、自動でサイト再起動が発生し、値が適用される事になります。
ASP.net , C#