当前位置:  开发笔记 > 后端 > 正文

在ASP.NET MVC中使用HttpContext.Current.Session测试类

如何解决《在ASP.NETMVC中使用HttpContext.Current.Session测试类》经验,为你挑选了1个好方法。

我正在向内部使用HttpContext.Current.Session的类添加一些测试,我们正在移植到ASP.NET MVC.我的班级看起来像这样:

class Foo
{
    public void foo()
    {
        HttpContext.Current.Session["foo"] = "foo";
    }
}

我想改变它是这样的:

class Foo
{
    IHttpSessionState session;

    public Foo() : this(HttpContext.Current.Session) {}

    public Foo(IHttpSessionState session)
    {
        m_session = session;
    }

    public void foo()
    {
        m_session["foo"] = "foo";
    }
}

问题在于默认构造函数.我无法传递旧类,因为它们没有实现新的ASP.NET MVC接口.

反正有没有在默认构造函数中获取实现IHttpSessionState的实例?

谢谢



1> Nick Berardi..:

试试这个,它使用了MVC框架使用的IHttpSessionState包装器.

class Foo
{
    // member variable set by constructor
    IHttpSessionState m_session;

    // if no session is passed it attempts to create a new session state wrapper from the current session
    public Foo() : this(new HttpSessionStateWrapper(HttpContext.Current.Session)) {}

    public Foo(IHttpSessionState session)
    {
        m_session = session;
    }

    public void foo()
    {
        m_session["foo"] = "foo";
    }
}

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有