2

私はこのようなクラスを持っています

#region Properties
    private static string inputURL;
    public static string InputURL
    {
        get { return inputURL; }
        set { inputURL = value; }
    }
    private static string outputURL;
    private static string ffBaseURL = "format=xml&";
    public static string FFBaseURL
    {
        get { return ffBaseURL; }
        set { ffBaseURL = value; }
    }
    private static string excludeParam = "fullurl,log";
    public static string ExcludeParam
    {
        get { return excludeParam; }
        set { excludeParam = value; }
    }
    private static string currentCategoryID = "234";
    public static string CurrentCategoryID
    {
        get { return currentCategoryID; }
        set { currentCategoryID = value; }
    }
    private static string navigationParameters = "query=*&log=navigation&filterCategoryId=" + currentCategoryID;
    public static string NavigationParameters
    {
        get { return navigationParameters; }
        set { navigationParameters = value; }
    } 
    #endregion

    #region Methods
    public static string NavigationCall()
    {

        List<string> excludeParams = new List<string>(excludeParam.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries));
        foreach (string key in HttpContext.Current.Request.QueryString.Keys)
        {
            if (!excludeParams.Contains(key))
            {
                FFBaseURL += key + "=" + HttpContext.Current.Request[key] + "&";
            }
        }
        FFBaseURL += NavigationParameters;


        if (Common.IsInternalIP())
        {
            FFBaseURL += "&log=internal";
        }
        outputURL = ffBaseURL;
        return outputURL;
    } 
    #endregion

ご覧のとおり、NavigationCall() という静的関数があります。この関数は静的なままにしておく必要があります。また、Web サイトからこの関数を呼び出すと、宣言した静的プロパティのために、各関数呼び出しで関数が間違った値を返します。すべての静的プロパティは、プログラムの実行後も値を保持することを知っています。

したがって、これらの関数を最初に呼び出すと「tesresult1」という結果が得られ、2 回目にウェブページをリロードすると「testresult1testresult1」という結果が得られるとしましょう。問題が発生したと思います。

  1. 静的変数値を再度宣言することでこの問題を解決しようとしましたが、物事をプログラムする良い方法のようには見えません。

  2. プロパティを非静的にしようとしましたが、NavigationCall() は静的関数であるため、内部で非静的プロパティを呼び出すことができないため、エラーが返されます。

今、私はこの問題を解決する正しい方法を探しています。この問題は、OOPS の概念の間違った理解が原因で発生したと思います。ケースを解決するために誰かがここで手を貸してくれますか、または問題がいくつかのリソースに大きなポイントである場合解決策を見つける方法をどこで理解できますか?

4

3 に答える 3