現在,IsFakeの値がShareに固定値で設定されています。
namespace NDDD.Domain { public static class Shared { public static bool IsFake { get; } = true; } }
これでは,コンパイルしないとFakeかどうかを切り替えることができません。それでは,実行ファイルからのテスト時に,面倒なので,外部から値を変更できるようにしておくのがいいでしょう。今回はやり方を解説していきます。
アプリケーション構成ファイルを追加する
コンパイルなしで設定を変更できるようにするために,設定ファイルを作成します。設定ファイルはどこからでも見られるようにしておきたいのでDomain層に配置します。
ドメインプロジェクトを右クリックして,「追加」「新しい項目」の順に選択します。
「アプリケーション構成ファイル」を選択し,名前を「NDDD.config」として,追加ボタンを押下します。NDDD.configという名前でなくてもいいのですが,基本的にはアプリケーション名にしておくのがわかりやすいと思います。
これで,「NDDD.config」という名前のファイルが追加されました。
作成されたファイルの<configuration></configuration>の部分は不要なので,その2行を削除します。
代わりに,<appSettings></appSettings>と打ち込みます。
IsFakeの項目を追加する
appSettingsの中に,IsFakeの項目を追加します。
これで,IsFakeという項目で,値が”0”の設定値が完成しました。こういった設定は好きなだけ追加することができます。これでファイルの作成は完了です。この状態でctrl+Sでファイルを保存しておきます。
「常にコピーする」に設定する
NDDD.configファイルを選択して,プロパティを表示し,「出力ディレクトリ」を「常にコピーする」に変更します。これで実行環境にこのファイルがコピーされて出力されることになります。コンパイル後は,このコピーされたファイルの値を変更することで,コンパイル後でも設定値を変更することができます。
WinFormのApp.configを変更する
WinFormプロジェクトに「App.config」というファイルがあるので,ダブルクリックで内容を表示します。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /> </startup> <appSettings configSource="NDDD.config"> </appSettings> </configuration>
appSettingsの部分を追加します。これで,アプリケーションの設定はNDDD.configファイルで行えるようになります。
Sharedで設定ファイルの値を読み込む
SharedクラスのIsFakeに固定値を設定していますが,これを,今作成した設定ファイルNDDD.configから読み込むように変更します。次のようにコードを変更します。
using System.Configuration; namespace NDDD.Domain { public static class Shared { public static bool IsFake { get; } = ConfigurationManager.AppSettings["IsFake"] == "1"; } }
設定ファイルのIsFakeの値が”1”の時のみ,SharedのIsFakeをTrueとしています。 このままだと,次のように,ConfigurationManagerがコンパイルエラーになっているので,参照設定にSystem.Configurationを追加します。
ドメインプロジェクトを右クリックして,参照の追加を選択します。
アセンブリを選択し,右上の検索窓に「conf」と入力します。そうすると,System.Configurationというのが出てくるので,そこにチェックをいれて「OK」ボタンを押下します。
あとは,上部にusing System.Configuration;を追加すると,コンパイルエラーは解消します。これで,Sharedで設定ファイルのIsFakeの値が読めるようになりました。
ブレークポイントを置いて検証する
FactoriesのIsFakeを使用している部分にブレークポイントを置いて画面を実行すれば,IsFakeに設定ファイルの値が取得できることが確認できます。うまく設定ファイルの値が取得できていない場合は,ソリューションから「ソリューションのクリーン」を行ってから実行してみてください。
ブレークポイントの部分でIsFakeの部分にカーソルを当てると,設定ファイルの値になっていることが確認できます。
実行ファイルから検証する
VisualStudioの「Factories」クラスなどをコード表示した状態で,画面上部のタブの部分を右クリックして,「このアイテムのフォルダーを開く」を選択します。
そうすると,ソースコードの存在するフォルダーが表示されます。この階層から移動して,WinFormプロジェクトがあるフォルダーを開いてください。
NDDD.WinFormをダブルクリックして中を表示します。
続いて「bin」フォルダーを開きます。
Debugモードで実行していれば,Debugを開きます。Releaseモードの時はReleaseを開きます。
その中に,「NDDD.config」ファイルが生成されているのでそのファイルを開きます。
するとVisualStudioで編集していたのと同じファイルが作成されているため,この中のIsFakeを変更することで,コンパイル後でも,値を変更することができます。
ちなみに,フォルダーから実行する場合は「NDDD.WinForm.exe」を実行すると,アプリケーションが起動します。設定ファイルを変更して,アプリケーションを起動したときの動きの違いが確認してみてください。こんな感じで,コンパイル後も値を変える可能性のある項目は,設定ファイルに項目をどんどん追加していってみてください。