Unity с asp.net mvc, передача параметров с внедрением свойства - PullRequest
2 голосов
/ 11 мая 2011

Я сейчас вставляю зависимость в свой контроллер mvc, как показано ниже:

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

В global.asax тип регистрируется с помощью

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

Теперь мне нужно передать несколько параметров конструктору SystemProxyServiceEx. К ним относятся некоторые значения, хранящиеся в переменной сеанса (HttpSessionStateBase Session), которые хранятся во время аутентификации. Как мне это сделать?

1 Ответ

2 голосов
/ 11 мая 2011

Обычная вещь, которую нужно сделать, это обернуть их в класс и внедрить их на основе интерфейса. Например:

// 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>(); 
...