在系统中,当前登录的用户(我们自己的用户不是 Windows 用户)有一个包含共享实例的单例。
在几百个数据访问类文件中,这用于为发送到数据库的每个请求设置 CreatebyID 和 EditbyID。几乎所有的类都继承了一个基类,尽管目前每个类都设置了两个值。
多年来,这对于公司的桌面应用程序来说都运行良好,但是当在新的网络应用程序中使用相同的数据访问类时,当前登录的用户在所有用户 session 中共享,并且无法在不引起问题的情况下进行更改。
如何在不显着重写整个 DAL 并且不将当前用户(或用户 ID)传递到每个实例或在每个类上为每次保存设置 EditbyID 属性的情况下重构代码。
最佳答案
您可以使用静态属性,通过 HttpContext.Current.Session
获取/设置 session 变量.
例如:
public class DAL
{
public static int CreatebyID
{
get
{
return (int)HttpContext.Current.Session["CreatebyID"];
}
set
{
HttpContext.Current.Session["CreatebyID"] = value;
}
}
public static int EditbyID
{
get
{
return (int)HttpContext.Current.Session["EditbyID"];
}
set
{
HttpContext.Current.Session["EditbyID"] = value;
}
}
}
关于c# - 如何从遗留代码中删除共享变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9841345/