[解決済み] app.configにカスタムコンフィグセクションを作成する方法は?重複
2023-02-05 17:49:55
質問
の中にカスタム設定セクションを追加したいのですが。
app.config
ファイルにカスタム設定セクションを追加したいです。
また、どのようにしてこれらの設定にアクセスすることができますか。
以下は、私が追加したい設定セクションです。
app.config
:
<RegisterCompanies>
<Companies>
<Company name="Tata Motors" code="Tata"/>
<Company name="Honda Motors" code="Honda"/>
</Companies>
</RegisterCompanies>
どのように解決するのですか?
名前空間をインポートしてください。
using System.Configuration;
ConfigurationElement Companyを作成します。
public class Company : ConfigurationElement
{
[ConfigurationProperty("name", IsRequired = true)]
public string Name
{
get
{
return this["name"] as string;
}
}
[ConfigurationProperty("code", IsRequired = true)]
public string Code
{
get
{
return this["code"] as string;
}
}
}
ConfigurationElementCollectionです。
public class Companies
: ConfigurationElementCollection
{
public Company this[int index]
{
get
{
return base.BaseGet(index) as Company ;
}
set
{
if (base.BaseGet(index) != null)
{
base.BaseRemoveAt(index);
}
this.BaseAdd(index, value);
}
}
public new Company this[string responseString]
{
get { return (Company) BaseGet(responseString); }
set
{
if(BaseGet(responseString) != null)
{
BaseRemoveAt(BaseIndexOf(BaseGet(responseString)));
}
BaseAdd(value);
}
}
protected override System.Configuration.ConfigurationElement CreateNewElement()
{
return new Company();
}
protected override object GetElementKey(System.Configuration.ConfigurationElement element)
{
return ((Company)element).Name;
}
}
とConfigurationSectionに分かれています。
public class RegisterCompaniesConfig
: ConfigurationSection
{
public static RegisterCompaniesConfig GetConfig()
{
return (RegisterCompaniesConfig)System.Configuration.ConfigurationManager.GetSection("RegisterCompanies") ?? new RegisterCompaniesConfig();
}
[System.Configuration.ConfigurationProperty("Companies")]
[ConfigurationCollection(typeof(Companies), AddItemName = "Company")]
public Companies Companies
{
get
{
object o = this["Companies"];
return o as Companies ;
}
}
}
というように、新しい設定項目を web.config (app.config) に登録する必要があります。
<configuration>
<configSections>
<section name="Companies" type="blablaNameSpace.RegisterCompaniesConfig, blablaAssemblyName" ..>
で設定を読み込みます。
var config = RegisterCompaniesConfig.GetConfig();
foreach(var item in config.Companies)
{
do something ..
}
関連
-
[解決済み】「The breakpoint will not currently be hit」を改善するには?このドキュメントにはシンボルが読み込まれていません。" という警告はどうすれば改善されますか?
-
[解決済み] 保護レベルによりアクセス不能になりました。
-
[解決済み】WPFでXamlファイルにコメントを追加する方法は?
-
[解決済み] enumを列挙するには
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] コードが含まれるアセンブリのパスを取得するにはどうすればよいですか?
-
[解決済み] Windowsフォームアプリケーションで、アプリケーションの設定を保存するにはどうすればよいですか?
-
[解決済み] Visual StudioでWebプロジェクトでないプロジェクトのApp.Config変換は?
-
[解決済み] 実行時にデフォルトのapp.configを変更する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】プログラム実行中に1秒待つ
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み] 保護レベルによりアクセス不能になりました。
-
[解決済み】パディングが無効で、削除できない?
-
[解決済み】バックスラッシュを含むパス文字列のエスケープシーケンスが認識されない件
-
[解決済み] UnityでOnCollisionEnterが呼ばれない
-
[解決済み】ファイルへの読み書きの際に共有違反のIOExceptionが発生する C#
-
[解決済み] ...基礎となる接続は閉じられました。予期しないエラーが受信で発生しました
-
[解決済み] [Solved] .NETでスレッドの終了を待つには?
-
[解決済み】「namespace」なのに「type」のように使われる。