开发者

Unity with asp.net mvc, passing parameters with property injection

开发者 https://www.devze.com 2023-03-05 07:00 出处:网络
I am currently inserting a dependency in my mvc controller as shown below: public class HomeController : Controller

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 param开发者_如何学Goeters 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?


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>(); 
0

精彩评论

暂无评论...
验证码 换一张
取 消