-12

私のアプリケーションでは、次のようなことをしたいと思います。

SomeApiClient apiClient = new SomeApiClient();

List<User> apiClient.getUsers();

私のweb.configでは、いくつかの構成キーと値のペアを作成します。

Web.configから値をロードするように、SomeApiClientのコンストラクターを作成するにはどうすればよいですか。ただし、アプリケーションの起動時または最初の要求時に1回だけ、毎回ではありません。

4

1 に答える 1

2

どうぞ。

namespace dm2
{
    using System.Collections.Specialized;
    using System.Configuration;

    public class SomeApiClient
    {
        internal static NameValueCollection Config
        {
            get
            {
                if (config == null) config = ConfigurationManager.AppSettings;
                return config;
            }
        }

        internal static NameValueCollection config;
    }
}

基本的には、非静的クラスで静的プロパティを使用するだけです...したがって、構成設定を取得するには、

public void DoFunConfigStuff()
{
    for (var i = 0; i < Config.Count;i++ )
    {
        Console.WriteLine("[{0}]: {1}",Config.Keys[i] ,Config[i]);
    }
}

web.configについておっしゃっていたので、これはWebアプリだと思います。したがって、アプリプールはいつでもリサイクルできることを期待する必要があります。その時点で、静的ゲッターが新しい設定を再評価してロードします。これについては返信しないのが最善です。

あなたができることの1つは、この情報をディスクやデータベースなどのメディアにシリアル化してから、ある種のdbスイッチ、または強制的にリロードするWebページを用意することです。

したがって、そのゲッターでは、シリアル化されたデータをチェックし、存在しない場合はweb.configをチェックして、そのデータをどこかに保存します。次回リサイクルされると、古いデータが取得されます。本当にあなたのセットアップに依存すると思います。

于 2013-01-14T03:37:00.097 に答える