3

.NET でのカスタム構成に関する簡単な例を見ています。私のケースはもう少し複雑で、ネストされたノードがあります。

構成ファイルからこれを読み取れるようにしたいと思います。

 <environments>

<environment name="live" url="http://www.live.com">
  <server name="a" IP="192.168.1.10"></server>
  <server name="b" IP="192.168.1.20"></server>
  <server name="c" IP="192.168.1.30"></server>      
</environment>

<environment name="dev" url="http://www.dev.com">
  <server name="a" IP="192.168.1.10"></server>
  <server name="c" IP="192.168.1.30"></server>
</environment>

<environment name="test" url="http://www.test.com">
  <server name="b" IP="192.168.1.20"></server>
  <server name="d" IP="192.168.1.40"></server>
</environment></environments> 

誰かがそのためのコードを提供できれば、私はそれを感謝します。

ありがとう!

4

7 に答える 7

9

これは、ConfigurationElement クラスから継承するカスタム構成クラスを実装することで読み取ることができます。

「サーバー」要素の例を次に示します。

public class ServerElement: ConfigurationElement
{
    [ConfigurationProperty("name", IsRequired = true, IsKey = true)]
    public string Name
    {
        get { return ((string)base["name"]); }
        set { base["name"] = value; }
    }

    ...
}

環境要素は実際にはコレクションであり、次のように実装できます。

public class EnvironmentElement: ConfigurationElementCollection
{
    protected override ConfigurationElement CreateNewElement(string elementName)
    {
        return new ServerElement(...);
    }
}
于 2009-04-08T14:04:03.187 に答える
7

私が最近見つけた気の利いたツールは、CodePlexのConfiguration Section Designerです。VSにうまく統合されます。

クラス、XML スキーマなどを生成します。推奨。

于 2009-04-08T14:16:19.943 に答える
6

構成ファイルのカスタム構成セクションを処理するために、いくつかのクラスを作成する必要があります。

Phil Haack による非常に優れたブログ エントリがあります: Custom Configuration Sections in 3 Easy Steps.

編集:

これを達成する方法を学ぶために過去に使用した Code Project の記事を見つけようとしていたところ、Phil のブログ エントリで見つけました。

.NET 2.0 構成の謎を解き明かす

ネストされた要素とコレクションを処理するために必要な情報が含まれています。

于 2009-04-08T14:06:47.050 に答える
1

この例が役立つ場合があります:カスタム構成セクション ハンドラーを作成するには (MSDN)

于 2009-04-08T14:05:09.737 に答える
0

App.Configファイルを使用します

System.Configuration.ConfigurationSettings.AppSettings ["DatabasePath"];

http://www.eggheadcafe.com/community/aspnet/2/10004734/appconfig-file-c.aspx

于 2009-04-08T15:30:46.990 に答える
0

構成ファイルを動的に読み取るのではなく、例の内容 (さまざまなステージング環境を対象とする) を見ると、前の質問への回答で示されているように、 Web 展開プロジェクトを確認することができます。

代わりに、デプロイ時に構成のマージを処理します。特に、接続文字列とサービス アカウントのパスワードなどの機密情報がある場合は、良い考えです...

于 2009-04-08T14:12:50.703 に答える
0

この記事を読んだ後、私が最近実装したのは次のとおりです。

クラスを .ini ファイルにバインドするためのリフレクションの使用

http://dvuyka.spaces.live.com/blog/cns!305B02907E9BE19A!174.entry

于 2009-04-08T16:45:40.163 に答える