Unity与asp.net mvc,用属性注入传递参数

发布于 2024-11-06 14:47:48 字数 468 浏览 4 评论 0原文

我当前正在我的 mvc 控制器中插入依赖项,如下所示:

public class HomeController : Controller
{
    [Dependency]
    public IProxyService ProxyService { get; set; }
}

在 global.asax 中,使用注册类型

UnityContainer _container = new UnityContainer();
_container.RegisterType<IProxyService, SystemProxyServiceEx>();

现在,我需要将一些参数传递给 SystemProxyServiceEx 构造函数。其中包括存储在身份验证期间存储的会话变量(HttpSessionStateBase Session)中的一些值。我怎样才能做到这一点?

I am currently inserting a dependency in my mvc controller as shown below:

public class HomeController : Controller
{
    [Dependency]
    public IProxyService ProxyService { get; set; }
}

In global.asax, the type is registered using

UnityContainer _container = new UnityContainer();
_container.RegisterType<IProxyService, SystemProxyServiceEx>();

Now, I need to pass a few parameters to the SystemProxyServiceEx constructor. These include some values stored in the session variable(HttpSessionStateBase Session) that are stored during authentication. How do I make this happen?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不奢求什么 2024-11-13 14:47:48

常见的做法是将它们包装在一个类中并基于接口注入它。例如:

// This interface lives in a service or base project.
public interface IUserContext
{
    string UserId { get; }

    // Other properties
}

// This class lives in your Web App project 
public class AspNetUserContext : IUserContext
{
    public string UserId
    {
        get { return (int)HttpContext.Current.Session["Id"]; }
    }

    // Other properties
}

现在您可以使您的 SystemProxyServiceEx 依赖于 IUserContext。最后一步是注册它,这当然很简单:

_container.RegisterType<IUserContext, AspNetUserContext>(); 

The common thing to do is to wrap those in a class and inject it based on an interface. For instance:

// This interface lives in a service or base project.
public interface IUserContext
{
    string UserId { get; }

    // Other properties
}

// This class lives in your Web App project 
public class AspNetUserContext : IUserContext
{
    public string UserId
    {
        get { return (int)HttpContext.Current.Session["Id"]; }
    }

    // Other properties
}

Now you can make your SystemProxyServiceEx take a dependency on IUserContext. Last step is to register it, which of course will be easy:

_container.RegisterType<IUserContext, AspNetUserContext>(); 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文