【发布时间】:2013-10-04 06:51:26
【问题描述】:
我有这样的课
#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() 的静态函数,该函数必须保持静态。当我从我的网站调用此函数时,由于静态属性 i,该函数在每个函数调用中返回错误值声明。我们都知道静态属性在程序执行后会保留它们的值。
所以说当我第一次调用这些函数时我得到一个结果“tesresult1”,第二次当我重新加载我的网页时它给我一个结果“testresult1testresult1”。我认为你现在遇到了问题。
我已经尝试通过再次声明静态变量值来解决这个问题,但它看起来不是一个很好的编程方式。
我尝试将属性设为非静态。但它返回错误,因为 NavigationCall() 是静态函数,我无法在其中调用非静态属性。
现在我正在寻找解决这个问题的正确方法,我认为这个问题是由于对 OOPS 概念的错误理解而出现的。任何人都可以在这里帮忙解决这个问题,或者如果问题很重要到一些我可以理解如何找到解决方案的资源?
【问题讨论】:
-
如果您在函数中重置(读作“重新分配”基值)
FFBaseURL参数会有所帮助,但我完全同意@Szymon 的回答。