Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从遗留代码中删除共享变量_C#_.net_Refactoring_Data Access Layer_Legacy Code - Fatal编程技术网

C# 如何从遗留代码中删除共享变量

C# 如何从遗留代码中删除共享变量,c#,.net,refactoring,data-access-layer,legacy-code,C#,.net,Refactoring,Data Access Layer,Legacy Code,在系统中,当前登录用户(我们自己的用户而不是windows用户)有一个包含共享实例的单例 在几百个数据访问类文件中,这用于为发送到数据库的每个请求设置CreatebyID和EditbyID。几乎所有的类都继承一个基类,尽管目前在每个类中都设置了这两个值 多年来,这一切都适用于公司的桌面应用程序。然而,当在新的web应用程序中使用相同的数据访问类时,当前登录的用户在所有用户会话中共享,并且无法在不引起问题的情况下进行更改 如何重构代码而不显著地重新写入整个DAL,并且不将当前用户(或用户ID)传递

在系统中,当前登录用户(我们自己的用户而不是windows用户)有一个包含共享实例的单例

在几百个数据访问类文件中,这用于为发送到数据库的每个请求设置CreatebyID和EditbyID。几乎所有的类都继承一个基类,尽管目前在每个类中都设置了这两个值

多年来,这一切都适用于公司的桌面应用程序。然而,当在新的web应用程序中使用相同的数据访问类时,当前登录的用户在所有用户会话中共享,并且无法在不引起问题的情况下进行更改


如何重构代码而不显著地重新写入整个DAL,并且不将当前用户(或用户ID)传递到每个实例中,或者为每个保存在每个类上设置EditbyID属性。

您可以使用静态属性,通过获取/设置会话变量

例如:

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;
        }
    }
}

您可以使用静态属性,通过获取/设置会话变量。我需要测试它是否是web应用程序(而不是桌面应用程序),但我可以看到它正在工作。谢谢