【问题标题】:ASP.Net MVC 3 session management when using IOC pattern使用 IOC 模式时的 ASP.Net MVC 3 会话管理
【发布时间】:2013-05-21 21:07:42
【问题描述】:

我正在尝试使用 IOC 模式,但找不到使用该模式实现状态管理的完美方法。如果有人可以帮助我,那就太好了。谢谢。

【问题讨论】:

  • 你在使用Unity容器

标签: asp.net-mvc-3 c#-4.0 dependency-injection inversion-of-control session-state


【解决方案1】:

我要做的是首先创建一个接口,其中包含您需要存储在 Session 中的所有属性(即:上下文):

using ProjectName.Core.Domain;

namespace ProjectName.Core.Interfaces
{
    public interface IProjectNameSessionContext
    {
        string StringProperty1 { get; set; }
        bool BoolProperty1 { get; set; }
        ProjectName.Core.Domain.Entity1 DomainEntity1 { get; set; }
    }
}

然后创建一个实现该接口的类,将其标记为可序列化:

using ProjectName.Core.Interfaces;

namespace ProjectName.Front.SessionData
{
    [Serializable]
    public class ProjectNameSessionContext : IProjectNameSessionContext
    {
        public string StringProperty1 { get; set; }
        public bool BoolProperty1 { get; set; }
        public ProjectName.Core.Domain.Entity1 DomainEntity1 { get; set; }
    }
}

最后告诉您的 IOC 在运行时将接口与类绑定,并在 HttpSession 上下文中实例化一个对象。

使用 StrucureMap 看起来像这样:

For<Core.Interfaces.IProjectNameSessionContext>().LifecycleIs(new HttpSessionLifecycle()).Use<ProjectNameSessionContext>();

希望有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多