0

我正在尝试构建一个可以交换的会话/临时数据提供程序。默认提供程序将在 asp.net mvc 之上工作,它需要从业务对象类访问 .net mvc TempData。我知道临时数据可通过控制器上下文获得,但我似乎无法找到它是否通过 HttpContext 或其他方式公开。我真的不想将控制器上下文作为参数传递,因为这会稀释我的接口定义,因为只有基于 asp.net 的会话提供程序需要这个,其他(使用 NoSQL DB 等)不关心控制器上下文。

为了进一步澄清,在这里添加更多代码。我的 ISession 界面看起来像这样。当此代码投入生产时,预计会话/临时数据将使用 NoSql db 工作。但我也喜欢在 asp.net mvc session/tempdata 之上为我的开发测试等提供另一个实现。

公共接口 ISession

{
    T GetTempData<T>(string key);

    void PutTempData<T>(string key, T value);

    T GetSessiondata<T>(string key);

    void PutSessiondata<T>(string key, T value);

}
4

1 回答 1

0

我不确切知道您要做什么,但是TempDataDictionary实现IDictionary<string, object>了,因此您可以让您的业务对象将其作为参数或使用构造函数注入。然后您可以让您的控制器将 TempData 作为参数传递给业务对象。通过使用字典接口,您的业务对象不再依赖于 ASP.NET MVC。

于 2011-03-05T15:11:57.567 回答