1

サイトのほぼすべてのページで使用するオブジェクト (ClientConfiguration) と、Web サイトにコンパイルされる関連プロジェクトに存在する多くのメソッドがあります。

私が今行っていることは、ページの読み込みごとにオブジェクトを作成して入力し、HttpContext に格納することです。これは、UI プロジェクトのどのようなものにもうまく機能します。また、dll プロジェクトのすべてについて、ClientConfiguration を使用する必要のあるすべてのメソッドに ClientConfiguration を渡します。

私がやりたいのは、関連するすべてのプロジェクト間で共有される「グローバル」プロパティを持つことです。そのため、それを渡す必要はありません。

これを達成する良い方法はありますか?

4

2 に答える 2

0

これは、初期構成が保存されている場所 (xml ファイル、データベースなど) によって少し異なりますが、要点がわかります。

これらがすべてのアプリケーション ユーザーに対して同じグローバル構成設定である場合、次のようなクラスを作成できます。

public class Config
{
    public static ClientConfiguration Current
    {
        get
        {
            if (HttpContext.Current.Application["clientconfig"] == null)
            { 
                //Fill object from database
            }

            return HttpContext.Current.Application["clientconfig"] as ClientConfiguration;
        }

        set
        { 
            //store object in database 

            //invalidate what is stored in application object 
            //so that it will be refreshed next time it's used
            HttpContext.Current.Application["clientconfig"] = null;
        }
    }
}

これにより、グローバル Application オブジェクトが保存ClientConfigurationされ、すべてのページで使用できるようになるため、ページの読み込み時に作成する必要がなくなります。

こんな感じで使えます

private void Foo()
{
    ClientConfiguration config = Config.Current;
}

同じデータを共有する必要がある複数のプロジェクトがある場合は、オブジェクトをデータベースまたは共有 XML ファイルに格納し、新しいクラス ライブラリ プロジェクトを作成して、Config クラスへの参照を含めることができるようにすることをお勧めします。

于 2013-10-10T13:24:26.397 に答える