6

例如,我将“当前用户”存储在 Session 中。Unity 正在实例化业务层对象。如何让业务层对象知道“当前用户”?

4

1 回答 1

14

您应该将“当前用户”隐藏在抽象后面:

public interface ICurrentUser
{
    string Name { get; }
}

此抽象应在业务层中定义,您需要创建一个放置在Composition Root中的 ASP.NET 特定实现:

public class AspNetCurrentUser : ICurrentUser
{
    public string Name
    {
        get { return HttpContext.Current.Session["user"]; }
    }
}

现在您的业务层对象可以依赖于ICurrentUser接口,在 Unity 中您可以按如下方式注册实现:

container.RegisterType<ICurrentUser, AspNetCurrentUser>();
于 2013-05-02T15:08:53.387 回答