我们有一个函数库,一些实用程序变量根据应用上下文桌面应用程序/网站以两种不同的方式存储
在网站中,我们使用 Sessions 和桌面静态变量,我们希望统一并自动化这些变量的 getter//setter,而不会对性能产生太大影响
例子:
public static class Cons
{
public static bool webMode;
}
public static class ConsWEB
{
public static string Username
{
get{ return HttpContext.Current.Session["username"].ToString();}
set{ HttpContext.Current.Session["username"]=value;}
}
}
public static class ConsAPP
{
private static string _username;
public static string Username
{
get{ return _username;}
set{ _username=value;}
}
}
我们认为的解决方案 1,使用 IF(似乎对性能不利,考虑多次访问变量,并且在某些情况下,变量是具有复杂内容的自定义类):
public static class Cons
{
public static bool webMode;
public static string Username
{
get{ return webMode? ConsWEB.Username : ConsAPP.Username; }
set
{
if(webMode) { ConsWEB.Username = value; }
else { ConsAPP.Username = value; }
}
}
}
解决方案 2 使用委托,在静态类构造函数中,根据具体情况将委托方法关联到每个 get 和 set。如果是webMode 指向ConsWEB 的get/set 方法,否则指向ConsAPP 的get/set 方法...
解决方案 2 在性能方面是最好的吗?这种情况还有其他方法吗?