■102304 / inTopicNo.12) |
Re[3]: 抽象クラスを継承したクラスのインスタンスについて |
□投稿者/ WebSurfer (2776回)-(2023/08/18(Fri) 11:48:20)
|
■No102300 (高橋 さん) に返信
ターゲットフレームワークが .NET 6.0 の WinForms アプリですよね。
であれば、構成情報の保存には json ファイルを使いそれから情報を取得するのが良さそうです。
具体例は以下の記事を見てください。
WinForms で構成情報とコンテキストの DI (CORE)
http://surferonwww.info/BlogEngine/post/2021/03/30/how-to-inject-configuration-and-dbcontext-in-windows-forms-application.aspx
それで、
> (1)全プロジェクトに共通の文字列(保存先フォルダ名等)が100個
> (2)各プロジェクトに共通ではないが必ず存在する文字列(保存ファイル名等)が各10個
> (3)各プロジェクトが独自に持っていたりもっていなかったりする文字列(各プロジェクト独自の定数)が各0個〜30個
の、(1) については json ファイルをコピペするだけで対処できます。
(2), (3) については、別にその情報を含めた json ファイルを作ってマージし、(2) は上書き、
(3) は追加するということができます。そういう機能が備わってます。具体例は以下の記事を見
てください。
環境別の appsettings.json (CORE)
http://surferonwww.info/BlogEngine/post/2020/09/23/appsettings-json-in-multiple-environments.aspx
上の記事は ASP.NET Core のものなので、プロジェクトに組み込みの機能がファイル名を見て
自動的に上書き・追加を行うようになってますが、それは自分でコードを書いても簡単にでき
ます。
例えば、前者の記事では appsettings.json から構成情報を取得しています。これを上で言う (1)
とすると、(2), (3) については例えば別に appsettings.addition.json というファイルを作って
それに含め(ファイル名は任意)、builder.AddJsonFile で追加してやれば (2) は上書き、(3) は
追加ということができます。
具体的には以下のようにします。
using Microsoft.Extensions.Configuration;
namespace WinFormsApp5
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false);
builder.AddJsonFile("appsettings.addition.json", optional: false);
// 追加・上書きされた結果
IConfiguration config = builder.Build();
// ・・・中略・・・
}
}
}
|
|