none
app.configの値取得方法 RRS feed

  • 質問

  • こんにちは。
    VS2005C#でウィンドウズアプリケーションを作成しています。
    設定をapp.configに設定しようとしていますが、以下のような設定値を読み込みたいのですが、どのようにすれば良いでしょうか?
    略称Aと正式名A123との対応一覧を取得し、Hashtableに設定しようとしています。

    <test>
     <conv>
      <ryaku>A</ryaku>
      <name>A123</name>
     </conv>
     <conv>
      <ryaku>B</ryaku>
      <name>B572</name>
     </conv>
      <conv>
      <ryaku>C</ryaku>
      <name>CCC</name>
     </conv>
    </test>

    app.configから値を取得する方法を検索すると、
    <configuration>
      <appSettings>
         <add key="Test" value="テスト!!" />
      </appSettings>
    このような設定なら
    string test = ConfigurationSettings.AppSettings["Test"];
    のようにして取得できるようですが、これはデータ構成が違うので使えないですよね。
    app.configをDOMなどで解析するしかないでしょうか?


    2007年4月26日 2:40

回答

  • 自前のカスタム構成セクション ハンドラを作成してください。

    複雑なので、後は調べてねー

    2007年4月26日 11:32
  • 何が問題なのか書いてないので、
     
    ・<add key=K value=V> ではなく、独自のXML形式で app.config に設定したい
    ・<add key=K value=V> でもよいが、Hashtable 型で設定値をまとめて取得したい
     
    の2通りの読み方ができます。
     
    前者であれば、すでに書かれているように専用のカスタムセクションハンドラを作成してください。
    System.Xml ネームスペースを使用したことがあれば非常に簡単でしょう。
     
    後者であれば、DictionarySectionHandler を使えば Hashtable 型で取得できます。
     
    2007年4月26日 13:53
  • VB.NETですがわかりやすいサンプルがありましたので参考まで。

     

    [HOWTO] Visual Basic .NET で独自の ASP.NET 構成セクション ハンドラを作成する方法

    http://support.microsoft.com/kb/318457/ja

     

     

    2007年4月30日 3:18

すべての返信

  • 自前のカスタム構成セクション ハンドラを作成してください。

    複雑なので、後は調べてねー

    2007年4月26日 11:32
  • 何が問題なのか書いてないので、
     
    ・<add key=K value=V> ではなく、独自のXML形式で app.config に設定したい
    ・<add key=K value=V> でもよいが、Hashtable 型で設定値をまとめて取得したい
     
    の2通りの読み方ができます。
     
    前者であれば、すでに書かれているように専用のカスタムセクションハンドラを作成してください。
    System.Xml ネームスペースを使用したことがあれば非常に簡単でしょう。
     
    後者であれば、DictionarySectionHandler を使えば Hashtable 型で取得できます。
     
    2007年4月26日 13:53
  • VB.NETですがわかりやすいサンプルがありましたので参考まで。

     

    [HOWTO] Visual Basic .NET で独自の ASP.NET 構成セクション ハンドラを作成する方法

    http://support.microsoft.com/kb/318457/ja

     

     

    2007年4月30日 3:18
  • 皆さん、ありがとうございました。
    大型連休でレスが遅くなってしまいました。

    やりたかった事は構成セクションハンドラの作成です。

    log4netを使っているのですが、log4net独自のタグをapp.configに記述しているので、
    同じように独自の設定をapp.configに記述する方法があるのだろうと思っていましたが、
    キーワードがわからずうまく調べる事が出来なかった状態でした。

    実際には、以下ページを参考にしてXmlSerializationを使用して使いまわししやすいも
    のを実装する事が出来ました。
    http://japan.internet.com/developer/20050822/26.html

    .Net Framework2.0からのやり方もあるようですので、調べてみたいと思います。

    余談ですが、ふじさきさんに教えていただいたURLを参考にしている時に
    面白い(?)ページを見つけました。
    VB.NETのコードをC#に変換するページです。
    http://www.developerfusion.co.uk/utilities/convertvbtocsharp.aspx
    試してみたらちゃんと変換されているようでした。

    2007年5月7日 8:12
  • Webで言語の翻訳(?)とは面白いですね。

    中間言語を経由して変換かけてるみたいですね。

    コンパイルエラーも検知してくれるし、コードも最適化されてるみたいですね。

    2007年5月8日 13:25