从类库中访问用户上下文

时间:2009-04-28 10:08:11

标签: c# asp.net design-patterns class

背景

  • 我有一个win应用程序和一个Web应用程序和一个 共享类库。
  • 在我的类lib中,我有一些静态 拾取的SQL查询的方法 我的SQL连接字符串
  • 我将SQL连接字符串存储在一个 会话变量,因为它被设置为 记录确定的时间 使用哪个数据库。
  • 我的类lib无法访问我的会话 变量(是的,我当然可以使用 HttpContext.Current ...,但不会 在我的winapp工作)

解决方案吗

我设想了一种解决方案,其中我有一个用于当前用户/上下文的类,在创建它时,我注入了首选行为,如下所示:

UserContex current = new UserContext();
current.SessionHandler = new AspNetSessionHandler();

但是,我想要一个静态类,我可以在不必一直传递它的情况下使用它然后如果在Web应用程序中使用或者从其他地方使用它会从会话中得到它的变量(我不是如果在winform中使用winapp开发人员。

我会试着想出这样的事情,但如果我找到一个已经有效的解决方案就会很棒,这就是为什么我呼吁你们共同的疯狂

1 个答案:

答案 0 :(得分:1)

Csla包含一个类似的设置,使用静态ApplicationContext类,在Rockford Lhotka的书籍Expert C#Business Objects中讨论...为了处理连接字符串问题,我建议创建一个DataConnection类,它从配置中返回一个静态连接字符串文件,如果连接字符串来自Web.config或App.config

,则无关紧要
public class DataConnection
{


    public static string NameOfConnection
    {
        get
        {
            return ConfigurationManager.ConnectionStrings["NameOfConnection"].ConnectionString;
        }
    }
}