プログラム 技術

.Net 8.0でconfigファイルっぽいものを自作する

.Net 8.0でconfigファイルを使おうと思ってWebでなかなか見つからなかったので、メモしておきます。
以下のサイトでは『System.Configuration.ConfigurationManager』を使用したものになっています。しかし、今回は自作でconfigファイルもどきを作ります。値の上書きもできます。

参考サイト
App.config(アプリケーション構成ファイル)を利用する - PG日誌
App.config(アプリケーション構成ファイル)を利用する - PG日誌

2021-10-09 C#の実行形式のファイル(.NET Framework, .NET Core)にはアプリーション固 ...

続きを読む

シングルトンクラスを用意する

とりあえず今回はいちいちインスタンスを生成するのがメンドウなのでシングルトンクラスで実装します

internal class ConfigFile
{
    private static ConfigFile singleInstance;

    private ConfigFile()
    {
        // 初期化処理
    }

    public static ConfigFile GetInstance()
    {
        if (singleInstance == null)
        {
            singleInstance = new ConfigFile();
        }
        return singleInstance;
    }
}

シングルトンクラスについては以下のサイトが参考になると思います

参考サイト
【C#】シングルトンを実装する(デザインパターン)
【C#】シングルトンを実装する(デザインパターン)

C#でシングルトンパターンを使用する方法を紹介しています。シングルトン(singleton)はあるクラスのインスタンスの ...

続きを読む

データ保存ファイルを作成

次に保存するためのファイルを作成し、次回以降はそのファイルを読み込むようにします。今回使用するファイルの拡張子はJSON形式で作成しています

public Dictionary<string, string> Config;
private string _jsonPath;

private ConfigFile()
{
    string exePath = Assembly.GetExecutingAssembly().Location;
    _jsonPath = Path.ChangeExtension(exePath, ".json");
   
    if (!File.Exists(_jsonPath))
    {
        // 初回起動時のみ実行するコード
        Console.WriteLine("This is the first launch!");
        Config = new Dictionary<string, string>();
        File.WriteAllText(_jsonPath, JsonSerializer.Serialize(Config));
    }
    else
    {
        // 2回目以降の起動時に実行するコード
        Console.WriteLine("This is not the first launch.");
        Config = JsonSerializer.Deserialize<Dictionary<string, string>>(File.ReadAllText(_jsonPath));
    }
}

データをファイルに書き出す

.Net Frameworkとかと同じようにSaveメソッドを呼び出したらjsonファイルに書き出すようにします

public void Save()
{
    var json = JsonSerializer.Serialize(Config);
    File.WriteAllText(_jsonPath, JsonSerializer.Serialize(Config));
}

実際の使い方

こんな感じで使えます

// 保持していない値はエラーとなる(既存のDictionary型と同じ)
ConfigFile.GetInstance().Config["Test"];

// Testというデータ名にTestという値を設定
ConfigFile.GetInstance().Config["Test"] = "Test";

// この関数を呼ばないとデータが保持されない
ConfigFile.GetInstance().Save();

会社紹介

私が所属しているアドバンスド・ソリューション株式会社(以下、ADS)は一緒に働く仲間を募集しています

会社概要
「技術」×「知恵」=顧客課題の解決・新しい価値の創造

この方程式の実現はADSが大切にしている考えで、技術を磨き続けるgeekさと、顧客を思うloveがあってこそ実現できる世界観だと思っています
この『love & geek』の精神さえあれば、得意不得意はno problem!
技術はピカイチだけど顧客折衝はちょっと苦手。OKです。技術はまだ未熟だけど顧客と知恵を出し合って要件定義するのは大好き。OKです
凸凹な社員の集まり、色んなカラーや柄の個性が集まっているからこそ、常に新しいソリューションが生まれています

ミッション
私たちは、テクノロジーを活用し、業務や事業の生産性向上と企業進化を支援します

ホームページ
アドバンスド・ソリューション株式会社
アドバンスド・ソリューション株式会社

アドバンスド・ソリューションは主にMicrosoft製品を使用して、企業の生産性向上に取り組んでいます。要件定義から導入 ...

サイトへ移動

お問い合わせ
お問い合わせ  | アドバンスド・ソリューション株式会社
お問い合わせ | アドバンスド・ソリューション株式会社

お問い合わせはこちら

-プログラム, 技術
-