【发布时间】:2013-05-21 21:07:42
【问题描述】:
我正在尝试使用 IOC 模式,但找不到使用该模式实现状态管理的完美方法。如果有人可以帮助我,那就太好了。谢谢。
【问题讨论】:
-
你在使用
Unity容器
标签: asp.net-mvc-3 c#-4.0 dependency-injection inversion-of-control session-state
我正在尝试使用 IOC 模式,但找不到使用该模式实现状态管理的完美方法。如果有人可以帮助我,那就太好了。谢谢。
【问题讨论】:
Unity容器
标签: asp.net-mvc-3 c#-4.0 dependency-injection inversion-of-control session-state
我要做的是首先创建一个接口,其中包含您需要存储在 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>();
希望有帮助!
【讨论】: